TXT资料 轻松导入数据库
编程学堂
TXT文件的数据,如何导入到数据库中呢?不用手工录入,一口气直接导入!
需求:处理TXT文件中有规律的数据,将这些数据导入到数据库中。这里的数据“规律”为,每一行的格式一样、数据类似(见图)。

原理:把TXT文件中每行数据看作一个字符串,字符串中每个被分割的数据为一个字段,分割每个字段的字符为分割符,这里是逗号,也可以是、; #等符号。先将TXT文件的内容导入到Delphi的Memo中,然后依次取出Memo中每一行的数据进行处理,判断有多少个逗号(分隔符),然后依次把分隔符之间的字符串取出来写到数据库中。
技术要点:获取Memo中每一行字符串中有多少个分隔符,要用到Length函数和Copy函数,用Pos函数查找分隔符在字符串中的位置后,用Copy函数截取分隔符之间的字符串,用Delete函数删除分割符和分割符前的子串。
开发步骤
第一步:启动Delphi,新建一个项目,在主窗体上添加一个Memo1(用于显示导入的TXT文件的内容)、一个OpenDialog1(用于打开TXT文件)、三个Button、一个ADOConnection、一个ADODataSet(写入数据库组件)。
设置OpenDialog1的Filter的属性为*.txt,使对话框只能打开TXT文件。关键代码如下所示(完整代码下载地址:http://www.icpcw.com/bzsoft):
SepChar=',' ;//TXT文件中是以逗号分隔各字符串(字段)的,所以定义常量SepChar为逗号
if ADOCN.ConnectionString
<>''then
begin
ADOCN.Connected:=False;
ADOCN.ConnectionString:='';
end;
ADOCN.ConnectionString := 'Data Source=' + ExtractFile
Path(Application.ExeName) + 'data.Mdb';
ADOCN.Connected:=True;
第二步:在浏览按钮中添加下面代码,功能是把TXT文件内容导入到Memo中。代码如下所示:
if OpenDialog1.execute then
Memo1.Lines.LoadFromFile(openDialog1.filename);
再编写GetSubStrNum函数,功能是计算Memo中每一行中有多少个分隔符,关键代码如下所示(完整代码下载地址:http://www.icpcw.com/bzsoft):
Function GetSubStrNum(aString:String;SepChar:String):integer;
var
i:Integer;
StrLen:Integer;
Num:Integer;
begin
StrLen:=Length(aString);//计算长度
Num:=0;
For i:=1 to StrLen do
If Copy(aString,i,1) = SepChar then//一个字符一个字符地扫描,如果扫描到字符为“,”则num加1,表示字段的个数加1
Num:=Num+1;
result:=Num;
end;
第三步:用ADO和数据库建立连接,然后采用一个循环依次取出Memo每一行的值,并调用函数GetSubStrNum和GetSubStr,把每一行的字符串进行分离,存储在item数组中,然后把item数组的值插入到数据库中,关键代码如下所示(完整代码下载地址:http://www.icpcw.com/bzsoft):
ADODS1.insert;
ADODS1.FieldByName('name').AsString:=item[1];
ADODS1.FieldByName('sex').AsString:=item[2];
ADODS1.FieldByName('age').AsString:=item[3];
ADODS1.FieldByName('post').AsString:=item[4];
end;
ADODS1.UpdateBatch();
MessageDlg('数据导入成功!', mtInformation,[mbOk], 0);
