数据库

位置:IT落伍者 >> 数据库 >> 浏览文章

文本数据导入数据库的方法


发布日期:2018年05月18日
 
文本数据导入数据库的方法

有一段人事档案资料archivetxt内容如下

小许男工程师

小吴女助理工程师

小蔡男助理工程师

小牟女工程师

要将它转入数据库archivedbf中archivedbf结构如下

姓名性别年龄职称

怎么办呢?现在通过使用delphi编程很好地解决了这个难题Delphi提供了许多功能强大丰富的字符处理函数和过程常用的有

()function Length(SString)Integer//返回串的长度

()function Copy(SString;IndexCountInteger)String//给出一个字符串中串的拷贝

()function Pos(SubstrString;SString);Integer//查找子串在字符串中的位置

()Procedure Delete(VarSString;IndexCountInteger); //从一个字符串中去除子串

利用Delphi提供的已有函数和过程基础上编制自己的三个函数实现了纯文本格式资料转入数据库功能只要Delphi支持的数据库都可以支持

archivetxt中每行数据为一个字符串字符串中每个被分割的数据为一个字段分割每个字段的字符为分割符这里是空格也可以是;#等符号具体思想是先将字符串进行调整然后把串中每个字符同分割符比较将不是分割符的字符追加到MyStr串中最后得到一个字段的内容通过一个循环就可以将一个字符串分成几个字段

Function Regulate(aStringSepcharstring)string //去掉多余的分割符规范字符串

Function GetSubStr(varsStringstring;SepCharString)String; //得到字符串中一个子串因要改变参数aString的值所以将它用var定义

FunctionGetSubStrNum(aStringSepCharString)Integer;//计算一个字符串要被分割成几个字段

参数aString是所需分割的一个字符串SepChar是分割符

Function RegulateStr(aStringString;SepcharString)String;

var

iNumInteger;

FlagBoolean;

MyStrTempStrString;

begin

Flag:=False;//进行标志去除多余的分割符

Num:=Length(aString);//计算aString串的长度

for i:= to Num do

begin

TempStr:=Copy(aStringi);//取aString串中的一字符

if TempStr <> SepChar then

begin

MyStr:=MyStr+TempStr;

Flag:=True;

end

else

if(Flag = True)then

begin

Mystr:=Mystr+TempSrt;

Flag:=False;

end;

end;

if MyStr[Length(MyStr)] <> SepChar then

MyStr:=MyStr+SepChar;

RegulateSrt:=MyStr;

end;

Function GetSubStr(var aStringStringSepCharStrign)String;

var

MysrtString;

StrLenInteger;

SepCharPsoInteger;

begin

StrLen:=Length(aString);

SepCharPos:=Pos(SepCharaString);//计算分割符在子串中的位置

MyStr:=Copy(aStringSepCharPos-); //将分割符前所有字符放到mystr串中

Delete(aStringSepCharPos);//除去分割符和分割符前的子串

GetSubStr:=MyStr;//返回一个字段

end;

FunctionTformlGetSubStrNum(aStringString;SepCharString)Integer;

var

iInteger;

StrLenInteger;

NumInteger;

begin

StrLen:=Length(aString);

Num:=;

for i:= to StrLen do

if Copy(aStringi) = SepCharthen

Num:=Num+;

GetSubSrtNum:=Num;

end;

有了上面三个函数现在介绍一下具体的应用

首先建立一个窗体Forml加入一个RichEditl(或Menol)一个按钮Buttonl和一个Tablel设置Tablel的属性

TablellDataBase = c:\Archivs

TablellTableName =Archivedbf

分别加入以下程序

Const Space=

ProcedureTFormlFormCreate(SenderTobject);

begin

RichRditlLinesLoadFromFile(Archivetxt);

end;

ProcedureTFormlButtonClick(SenderTobject);

var

ijInteger;

MyLineString;

begin

with Tablel do

begin

Open;

for i:= to RichEditlLinesCount- do

begin

MyLine:=RegulateStr(RicheditlLines[i]Space);

for j:= to Num do

begin

Append;

fileds[j-]aString:=GetSubSrt(MyLineSpace));

post;

end;

end;

end;

end;

               

上一篇:Delphi、MS SQL Server开发环境下存储过程的使用

下一篇:用DELPHI编程访问SQL SERVER数据库