textbox

IT博客 联系 聚合 管理
  103 Posts :: 7 Stories :: 22 Comments :: 0 Trackbacks


利用ADO访问csv文件可以利用Schema.ini来订制格式,数据类型, Schema.ini 必须与csv在同一个目录才生效

test1.csv 内容

a,b,c
qqq,qqq,qq
22,22,22
2,2,2
2,4,2
qqq,qqq,qq
qqq,qqq,qq





Schema.ini 内容

[test1.csv]
Format=Delimited(,)
ColNameHeader=True
MaxScanRows=0
CharacterSet=ANSI
a=F1 Char Width 3
b=F2 Char Width 10
c=F3 Integer

[test2.csv]
Format=Delimited(,)
ColNameHeader=False
MaxScanRows=0
CharacterSet=ANSI
Col1=F1 Char Width 5
Col2=F2 Char Width 5
Col3=F3 Char Width 5
Col4=F4 Char Width 5
Col5=F5 Char Width 5
Col6=F6 Char Width 5

delphi source

procedure TForm1.Button1Click(Sender: TObject);
var
  t:Cardinal;
begin
  t:
= GetTickCount();
  ADOConnection1.Close;
  ADOConnection1.ConnectionString :
=   ' Provider=Microsoft.Jet.OLEDB.4.0;Data Source=C:\Temp\;Persist Security Info=False;Extended Properties="Text;HDR=Yes;FMT=Delimited(,)"'; // HDR表示首行字段列表,Delimited(,)表示是以逗号分割的文件
  ADOQuery1.Close;
  ADOQuery1.SQL.Text :
=   ' select * from [Test1.csv]';
  ADOQuery1.Open;
  t:
= GetTickCount() - t;
  memo1.Lines.Add(inttoStr(t));
end ;

procedure TForm1.Button2Click(Sender: TObject);
var
  t:Cardinal;
begin
  t:
= GetTickCount();
  ADOConnection1.Close;
  ADOConnection1.ConnectionString :
=   ' Provider=MSDASQL;Driver={Microsoft Text Driver (*.txt; *.csv)};DBQ=C:\Temp';
  ADOQuery1.Close;
  ADOQuery1.SQL.Text :
=   ' select * from Test1.csv';
  ADOQuery1.Open;
  t:
= GetTickCount() - t;
  memo1.Lines.Add(inttoStr(t));
end ;


这个这两种读取方式.数据量小,第一种快点.数据量大第二种快. 如果没有Schema.ini 你会发现读取出来的数据有些是空的.是字段类型的缘故.

posted on 2011-03-02 11:14 零度 阅读(3306) 评论(0)  编辑 收藏 引用 所属分类: delphi
只有注册用户登录后才能发表评论。