form1.ADOConnection1.close;
   sa:=ExtractFilePath(ParamStr(0))+'TABLE\shuju2.mdb';
  form1.ADOConnection1.ConnectionString:='Provider=Microsoft.Jet.OLEDB.4.0;Data Source='+sa;
   form1.ADOConnection1.Open;     sql:= 'INSERT INTO shuju ';
     sql:=sql+'SELECT * From [Text;DATABASE=C:\Documents and Settings\liu tian\桌面\shu\shuju].[123.csv]';
       form1.ADOQuery1.SQL.Add(sql);
      form1.ADOQuery1.ExecSQL;
--
以上 是将 123.CSV的数据导入 数据表 shuju
123.csv格式
11,22,33
导入数据库 也是11,22,33--
但是 我想导入数据的时候将11改为11xyz,就是数据库里是 11xyz,22,33怎么做能快点呢?百万级别、、、、、、、、、、

解决方案 »

  1.   

    先按上述方法导入数据,然后update。
      

  2.   

    11xyz,22,33
    在一个字段里?
      

  3.   

    SOR 我没说清楚
    现在 完成的是 数据库字段 1,2,3,4 对应 CSV 字段1,2,3,4
    但是我想在数据库里设置个字段5 ,导入的 是 CSV字段的 1+2 的数值
    该怎么办呢
      

  4.   

    自己写一个 数据结构,对应你的数据 ,然后 先拆分得到各个数据,然后在运算 ,把得到的数据统一放到一个List中,拆分完成后,统一入库,避免一条一条的入库啦
      

  5.   

    楼上说的对,不过采用tlist也是需要一条条插入吧,可以考虑使用TFileStream,将CSV内容读入之后分段解析,比如每段50000字符,再对每段按CSV的分隔符和换行符进行细分记录,这样一条条加入mdb文件。这样做的好处可以控制进度条,而且不占内存,每段读取完毕释放字符串,继续取下一段;缺点是实现起来复杂,我做过一个类似的工具就是采用这种方式,调试很累人,运行起来还满意。
      

  6.   

    我也想用CSV 和 FILESTREAM
    问题是 CSV每行的大小不等啊
    比如
    第一行 1,2,3,4,5
    第二行 11,22,33,44,55
      

  7.   

    无需要相等啊,每行每列都有固定的分隔符,分析这些分隔符的位置可以精确定位到某行某列。CSV文件其实是分隔符文件,用记事本、写字版、ultraedit等文本工具都可以打开,并不一定需要excel。再说excel打开为什么可以显示成表格那么整齐,它也是按照行列分隔符去识别这个文件的。