![]() |
Datenbank: PostgreSQL, dBase • Zugriff über: Query
Daten von lokaler Tabelle in Tabelle auf Server kopieren
Aloha :hi:
Ich habe zwei Tabellen von denen ich gerne Daten kopieren möchte. Tabelle1, lokal, dBase Tabelle2, Server, PostgreSQL Über ODBC habe ich mir eine Datenquelle eingerichtet, so dass ich mir die Daten der Postgres Tabelle unter Delphi auch anzeigen lassen kann. Also dachte ich mir, könnte man ja so machen: :mrgreen:
Delphi-Quellcode:
So gehts nicht und der Fehler: "Relation <Pfad Tabelle1> existiert nicht" ist eigentlich logisch, da sich die Tabelle ja nicht auf dem Server befindet.
pfad:= 'C:\Dokumente und Einstellungen\simone\datenbank\tabelle1';
Query1.databasename:= 'PostgresTabelle'; Query1.Close; Query1.SQL.Add('INSERT INTO Tabelle2 SELECT Spalte1, Spalte2 FROM "'+pfad+'"'); Query1.Open; Habt ihr vielleicht einen Tipp für mich, wie es anders geht? Mir fällt da nichts ein :oops: |
Re: Daten von lokaler Tabelle in Tabelle auf Server kopieren
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:
Nicht besonders elegant, nicht besonders schnell, aber sollte funktionieren.
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; Grüße Mikhal |
Re: Daten von lokaler Tabelle in Tabelle auf Server kopieren
Vielen Dank, das funktioniert :kiss:
Zitat:
|
Re: Daten von lokaler Tabelle in Tabelle auf Server kopieren
Hallo,
bei einem Zugriff über die BDE wäre der Einsatz der Komponente TBatchMove naheliegend. Freundliche Grüße |
Alle Zeitangaben in WEZ +1. Es ist jetzt 03:51 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz