将txt文件中的数据读入数据库。
txt文件中有如下数据:
00:IFCSUM:MANIFEST:9:83446660-8:83446660-8001:0601310953'
10::SYMS HUASHAN:CN:0604N::::20060128::CHIWAN:::'
以冒号为分隔符,两个冒号之间的数据为不定长的。我现在用
Table1.FieldByName('a').AsString:=Copy(instring,1,1);只能取定长的数据。另外还要判断每一行的前两个字符,如是00要放到00数据库,如是10则放到10数据库。
请高手赐教!!
txt文件中有如下数据:
00:IFCSUM:MANIFEST:9:83446660-8:83446660-8001:0601310953'
10::SYMS HUASHAN:CN:0604N::::20060128::CHIWAN:::'
以冒号为分隔符,两个冒号之间的数据为不定长的。我现在用
Table1.FieldByName('a').AsString:=Copy(instring,1,1);只能取定长的数据。另外还要判断每一行的前两个字符,如是00要放到00数据库,如是10则放到10数据库。
请高手赐教!!
你用一个TStringList将00:IFCSUM:MANIFEST:9:83446660-8:83446660-8001:0601310953'分解后的数据按照这样的格式分别存入,例如'00|IFCSUM' '00|MANIFEST' '00|9' ......到时候你一个一个的读取TStringList里面的数据,然后存入相应的数据到相应的表你先写好不好?实在写不出再提出。
关于表名的问题,我这里是根据00、01、10、11等特殊情况写的,如果你的表是没有规律的,就需要先建一个表的数组,然后去查表了。procedure TForm1.Button1Click(Sender: TObject);
var
sl: TStringList;
tbName, i: integer;
s, d: string;
begin
sl := TStringList.Create;
sl.LoadFromFile('data.txt');
for i:=0 to sl.Count-1 do
begin
s := sl.Strings[i];
if Pos(':', s)<=0 then continue;
tbName := StrToInt(Copy(s, 1, Pos(':', s)-1));
s := Copy(s, Pos(':', s)+1, Length(s));
while Pos(':', s)>0 do
begin
d := Copy(s, 1, Pos(':', s)-1);
s := Copy(s, Pos(':', s)+1, Length(s));
with ADOQuery1 do
begin
Close;
SQL.Clear;
SQL.Text := 'insert into ';
Case tbName of
0: SQL.Add('00');
1: SQL.Add('01');
2: SQL.Add('10');
3: SQL.Add('11');
end;
SQL.Add(' (name) values ('''+ d +''')');
ExecSQL;
end;
end;
end;
FreeAndNil(sl);
end;
procedure TForm1.Button1Click(Sender: TObject);
var
sl: TStringList;
tbName, i: integer;
s, d: string;
begin
sl := TStringList.Create;
sl.LoadFromFile('D:\editrans\data.txt');
for i:=0 to sl.Count-1 do
begin
s := sl.Strings[i];
if Pos(':', s)<=0 then continue;
s := Copy(s, Pos(':', s)+1, Length(s));
while Pos(':', s)>0 do
begin
d := Copy(s, 1, Pos(':', s)-1);
s := Copy(s, Pos(':', s)+1, Length(s));
sl.Add(d);
end;
ListBox1.Items.AddStrings(sl);
end;
end;
可是导入后的结果却是:
00:IFCSUM:MANIFEST:9:83446660-8:83446660-8001:0601310953'
10::SYMS HUASHAN:CN:0604N::::20060128::CHIWAN:::
IFCSUM
MANIFEST
9
83446660-8
83446660-8001
00:IFCSUM:MANIFEST:9:83446660-8:83446660-8001:0601310953'
10::SYMS HUASHAN:CN:0604N::::20060128::CHIWAN:::'
IFCSUM
MANIFEST
9
83446660-8
83446660-8001
SYMS HUASHAN
CN
0604N20060128CHIWAN
请指教!!