求助!自动拆分txt文件,然后自动导入SQL(100分)

  • 主题发起人 主题发起人 qlfjq
  • 开始时间 开始时间
Q

qlfjq

Unregistered / Unconfirmed
GUEST, unregistred user!
我想把一个TXT文件里面的数据导入到SQL中的表里面,但数据量太大每个文件有5万条记录左右,一次导入很慢,我想把这个文件分拆成每个1000条记录的小文件,然后按顺序逐个文件导入到SQL。
 
var
ms:Tmeorystream:
i:inteer;
p:pchar;
size:integer;
sts:Tstrings;
f:textfile;
begin
ms:=Tmeorystream.create;
sts:=Tstrings.create;
try
ms.loadefromfile('u.txt');
size:=ms.size;
FillChar(p, SizeOf, 0);
ms.read(p,size);
sts.text:=p;
assignfile(f,'u0.txt')
rewrite(f);
for i:=0 to 49999 do
begin
writeln(f,sts);
if ((i+1) mod 1000)=0 then
begin
close(f);
assignfile(f,'u'+inttostr((i div 1000))+'.txt');
rewrite(f);
end;

end;
finally
ms.free;
sts.free;
end;
end;
大概就是这样了!
 
用ADO吧,又简单,又快.5万条记录小意思!~
 
我是新手,能不能详细点啊?最好就可以举个例子。。
我现在是用copy把每条记录分段取出然后写入数据库相应的字段。
很慢啊~~~~
如果有源码就真的是感激万分了。
qlfjq@163.com
 
在Form上放一个ADOConnection,连结指向目标SQL库;
比如txt文件在c:/temp/aaaa.txt
就执行
ADOConnection.Connected := True;
ADOConnection.Execute('Select * Into abcd From [Text;Database=c:/temp].aaaa.txt');
 
这样只能把TXT文件里面的内容全部导入到一个字段里。。。。。
 
你在论坛里搜索一下,关于异构类型数据互导的讨论,看完以后就明白了。
 
BULK INSERT
以用户指定的格式复制一个数据文件至数据库表或视图中。
BULK INSERT Northwind.dbo.[Order Details]
FROM 'f:/orders/lineitem.tbl'
WITH
(
FIELDTERMINATOR = '|',
ROWTERMINATOR = '|/n'
)
 
你的TXT文件的格式是什么样子的?
 
后退
顶部