《2022年文本数据导入数据库的方法汇编 .pdf》由会员分享,可在线阅读,更多相关《2022年文本数据导入数据库的方法汇编 .pdf(3页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、文本数据导入数据库的方法有一段人事档案资料archive.txt, 内容如下:小许男 21 工程师小吴女 23 助理工程师小蔡男 22 助理工程师小牟女 22 工程师要将它转入数据库archive.dbf 中,archive.dbf 结构如下:姓名 ,性别 ,年龄 ,职称怎么办呢?现在通过使用delphi 编程 ,很好地解决了这个难题。Delphi 提供了许多功能强大 ,丰富的字符处理函数和过程,常用的有:(1)function Length(S :String) :Integer/返回串的长度(2)function Copy(S :String;Index,Count :Integer):S
2、tring/ 给出一个字符串中串的拷贝(3)function Pos(Substr :String;S:String);Integer 查找子串在字符串中的位置(4)Procedure Delete(VarS:String;Index,Count :Integer); 从一个字符串中去除子串利用 Delphi 提供的已有函数和过程基础上编制自己的三个函数,实现了纯文本格式资料转入数据库功能。只要Delphi 支持的数据库都可以支持。archive.txt 中每行数据为一个字符串,字符串中每个被分割的数据为一个字段,分割每个字段的字符为分割符,这里是空格 ,也可以是 ,、;、等符号。具体思想是:
3、先将字符串进行调整,然后把串中每个字符同分割符比较,将不是分割符的字符追加到MyStr 串中 ,最后得到一个字段的内容。通过一个循环,就可以将一个字符串分成几个字段。Function Regulate(aString,Sepchar:string):string 去掉多余的分割符,规范字符串Function GetSubStr(varsString :string;SepChar:String):String; /得到字符串中一个子串,因要改变参数aString 的值 ,所以将它用var 定义。FunctionGetSubStrNum(aString,SepChar :String):Inte
4、ger;计算一个字符串要被分割成几个字段。参数: aString 是所需分割的一个字符串,SepChar 是分割符。Function RegulateStr(aString :String;Sepchar:String):String; var i,Num :Integer; Flag:Boolean; MyStr,TempStr :String; begin Flag:=False;进行标志 ,去除多余的分割符Num:=Length(aString); 计算 aString 串的长度名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - -
5、- 名师精心整理 - - - - - - - 第 1 页,共 3 页 - - - - - - - - - for i:=1 to Num do begin TempStr:=Copy(aString,i,1); 取 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 MyStrLength(MyStr) SepChar then
6、 MyStr:=MyStr+SepChar; RegulateSrt:=MyStr; end; Function GetSubStr(var aString :String,SepChar:Strign):String; var Mysrt: String; StrLen:Integer; SepCharPso : Integer; begin StrLen:=Length(aString); SepCharPos:=Pos(SepChar,aString);计算分割符在子串中的位置MyStr:=Copy(aString,1,SepCharPos 1); 将分割符前所有字符放到mystr 串中
7、Delete(aString,1,SepCharPos);除去分割符和分割符前的子串GetSubStr:=MyStr; 返回一个字段end; FunctionTforml.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) = SepCharthen Num:=Num+1; 名师资料总结 -
8、 - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 2 页,共 3 页 - - - - - - - - - GetSubSrtNum:=Num; end; 有了上面三个函数,现在介绍一下具体的应用:1.首先建立一个窗体Forml, 加入一个 RichEditl( 或 Menol),一个按钮 Buttonl 和一个 Tablel,设置 Tablel 的属性:Tablell.DataBase = c:Archivs Tablell.TableName =Archive.dbf 2.分别加入以下程序:Cons
9、t Space= ProcedureTForml.FormCreate(Sender:Tobject); begin RichRditl.Lines.LoadFromFile(Archive.txt); end; ProcedureTForml.Button1Click(Sender :Tobject); var i,j :Integer; MyLine :String; begin with Tablel do begin Open; for i:=0 to RichEditl.Lines.Count1 do begin MyLine:=RegulateStr(Richeditl.Linesi,Space); for j:=1 to Num do begin Append; filedsj 1.aString:=GetSubSrt(MyLine,Space); post; end; end; end; end; 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 3 页,共 3 页 - - - - - - - - -
限制150内