TXT资料 轻松导入数据库

编程学堂

TXT文件的数据,如何导入到数据库中呢?不用手工录入,一口气直接导入!

需求:处理TXT文件中有规律的数据,将这些数据导入到数据库中。这里的数据“规律”为,每一行的格式一样、数据类似(见图)。

14-f15-1-1.jpg

原理:把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);

14-f15-1-2.jpg
程序运行效果图