Hallo
ich möchte eine external Tabelle in eine Firebird Tabelle überführen. Der Quelltext den ich mir zusammengestückelt habe funktioniert fehlerfrei(laut Compiler). Das Ergebnis ist niederschmetternd.
Es gibt keine Feldtrennung, jeweils 2 Buchstaben verschwinden(egal ob Feld1 od.Feld2), Datensatzendezeichen werden nicht erkannt.
Delphi-Quellcode:
procedure TForm1.btn2Click(Sender: TObject);
begin
//IBDatabase1.DatabaseName := 'c:\db\test.fdb';
with IBQuery1
do
begin
Active:=False;
sql.Clear;
sql.Text := '
DROP TABLE tabelle2' ;
Active:=true;
IBTransaction1.Commit;
sql.clear;
Active:=false;
sql.text := '
CREATE TABLE TABELLE2 (FELD001 VARCHAR(50) CHARACTER SET ISO8859_1 COLLATE DE_DE, FELD002 VARCHAR(250) CHARACTER SET ISO8859_1 COLLATE DE_DE)';
Active:=true;
IBTransaction1.Commit;
end;
ibdb1.Close;
end;
procedure TForm1.btn3Click(Sender: TObject);
begin
with IBQuery1
do
begin
Active:=False;
sql.Clear;
sql.Text := '
Create TABLE dat_ext external file''
c:\externalTables\Tabelle2.txt''
(feld001 varchar(50),feld002 varchar(250), crlf smallint )';
Active:=true;
IBTransaction1.Commit;
end;
end;
procedure TForm1.btn4Click(Sender: TObject);
begin
with IBQuery1
do
begin
Active:=False;
sql.Clear;
sql.Text := '
Insert into Tabelle2 SELECT FELD001 , FELD002 from dat_ext ';
Active:=true;
IBTransaction1.Commit;
end;
end;
procedure TForm1.btn5Click(Sender: TObject);
begin
with IBQuery1
do
begin
Active:=False;
sql.Clear;
sql.Text := '
drop table dat_ext ';
Active:=true;
IBTransaction1.Commit;
end;
end;
Der Quelltext sieht zwar nicht sehr vertrauenserweckend aus, aber er läuft.
Ich habe mehrere Möglichkeiten für crlf gefunden, hier als smallint aber auch char(2) ist möglich. Verwirrend!
Code:
... TABLE dat_ext external file''c:\externalTables\Tabelle2.txt''(feld001 varchar(50),feld002 varchar(250), crlf smallint )';
Völlig egal ob smallint oder Char(2), das Ergebnis ist dasselbe.
Ich hoffe ihr könnt mir helfen.