怎样把用,号分割的文本导入数据库?(50分)

  • 主题发起人 主题发起人 weel
  • 开始时间 开始时间
W

weel

Unregistered / Unconfirmed
GUEST, unregistred user!
怎样把用,号分割的文本导入数据库?
如:
姓名,级别,工龄,赔缴,所得额,调增项目,调增额,扣除项目,扣除额,应税所得额,税率,速算扣除数,个人所得税
lll,科员,5-10 ,否,1450,0+0+0,0,800+102+70+0+0+0,972, 478.00,5%,0, 23.90
 
把它当作CSV文件,用ADO的Microsoft Jet4.0 OLE DB provider当作数据表.
 
我没有写过这类的程序,不过我建议你可以采取一种比较原始但却简单的解决思路。
方法是:自己写个读文件的procedure或者function,根据你所处理的文本文件的数据
格式编写算法,提取所需数据,再将这些数据写入数据库。在不太要求速度的情况下,
可以读一个写一个;如果有一定速度要求,建议采用读写文件缓冲区的办法。试试吧,
应该行的。
 
Email贴出来,我给你个Demo.正好这几天我做过。
 
我的想法和ibmer的一样,不过这样做好像有点原始...:)
 
如果你用的是informix数据库,可以在dbaccess中使用下面的语句:
load from data.txt delimiter ','
insert into TableName;
如果是SQL Server,可以在命令行状态下使用命令:
bcp Database..Table in Data.txt -U sa -P -c -t, -r$/n -e errline.txt -S XXX.XXX.XXX.XXX
-U后面跟数据库登录用户名,-P 后面跟密码,-t后面跟分隔符类型,这里是“,”,-S后
跟你的机器IP或者机器名。注意参数间的空格。
其它类型的数据库应该也有类似的语句。
希望这些对你能有帮助。
 
这个问题我做过
var
mainstrs, linstr: Tstrings;

begin
mainstrs := Tstringlist.create;
linestr := Tstringlist.create;
mainstrs.loadfromfile(filename);
for i :=0 to mainstrs.count-1 do
begin
linestr.commatext := mainstrs;
if i=0 then
创建表;
  else
insertvalues(linestr);//这里linestr表示一个字符串列表,你可以插入一条记录
end;
end;
procedure insertvalues( linevalue : Tstrings);
begin
dosql('insert into table (字段1,字段2,字段3,字段4,,,)values('''+linevalue[0]+
+''','''+linevaue[1]+''','''linevalue[3]+''','''......''')');
//dosql就是你执行这句sql
end;
 
搞不懂,你试试把后缀改成csv,用excel打开!!!
这样的格式本来就是TEXT数据库的格式,ado可以打开!
使用任何导入到数据库的步骤都可以!!
干什么呢?!
zchu
 
首先感谢大家的回答,我指的是用Delphi处理。
以上几种方法我会比较一下的。
我的Mail:kitoosoft@sohu.com
Thanks!
 
致Blue_morning:
我的E-mail:KitooSoft@sohu.com
 
如此写法,应该可以:
insert test(ind,FiledDefault,Fieldnotnull) select '63454,45',1,1
当然如果你用Blob或Text字段,用DBMEMO的SaveData就可以了。
 
接受答案了.
 

Similar threads

S
回复
0
查看
3K
SUNSTONE的Delphi笔记
S
S
回复
0
查看
2K
SUNSTONE的Delphi笔记
S
D
回复
0
查看
1K
DelphiTeacher的专栏
D
后退
顶部