Zunächst: Die Methode Open darfst du nicht für Insert-, Update- und Delete-Statements verwenden. Hier musst du ExecSQL verwenden.
Lösung auf die Schnelle: Query1 für dBase, Query2 für Postgres, in einer Schleife bildest du die Insert-Anweisung mit den Feldinhalten aus Query1 in der Query2 und sendest sie mit ExceSQL (kein Post!, aber weventuell zweites
Query mit Anweisung Commit) an die PostgresSQL-Datenbank.
Schema:
Delphi-Quellcode:
Query1.SQL.Text := 'SELECT Feld1, Feld2 FROM DBASE';
Query1.Open;
Query2.SQL.Text := 'INSERT INTO POSTGRES(Col1, Col2)';
Query2.SQL.Add('VALUES (:Feld1, :Feld2)';
Query3.SQL.Text := 'COMMIT';
while not Query1.Eof do
begin
Query2.ParamByName('Feld1').AsInteger := Query1.FindField('Feld1').AsInteger;
Query2.ParamByName('Feld2').AsString := Query1.FindField('Feld2').AsString;
Query2.ExecSQL;
Query3.ExecSQL;
Query1.Next;
end;
Nicht besonders elegant, nicht besonders schnell, aber sollte funktionieren.
Grüße
Mikhal