Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Datenbanken (https://www.delphipraxis.net/15-datenbanken/)
-   -   Delphi Daten aus einer DB in eine andere DB kopieren per sql (https://www.delphipraxis.net/166070-daten-aus-einer-db-eine-andere-db-kopieren-per-sql.html)

BBoy 28. Jan 2012 13:44

Datenbank: TurboDB • Version: 5 • Zugriff über: TurboDB

Daten aus einer DB in eine andere DB kopieren per sql
 
Ich habe 2 Datenbanken. DB1 und DB2 darin sind je 3 Tabellen enthalten die in beiden DB identisch sind.
Nun möchte ich aus DB1 Tabelle2 bestimmte Datensätze zur DB2 Tabelle2 kopieren. Wie gesagt, die Tabellen sind identisch.

das hier funktioniert leider nicht:
Delphi-Quellcode:
      datamodule1.TdbQuery1.SQL.Text := 'INSERT INTO ArchivTable1.WptsTable1 SELECT * FROM TourTable1.WptsTable2 where gccode=12345';
Kann mir bitte jemand sagen wie das geht? Ich nutze TdbQuery für so was.
Danke.

sx2008 29. Jan 2012 01:38

AW: Daten aus einer DB in eine andere DB kopieren per sql
 
Wenn beide Datenbanken vom gleichen Server gehostet würden, dann würde deine SQL-Anweisung funktionieren.
Der MS SQL Server kann das, bei TurboDB glaub ich das eher nicht.
Also muss die Tabelle Datensatz für Datensatz kopiert werden.

Dazu braucht man zwei Queries:
Delphi-Quellcode:
querysrc.SQL.Text := 'SELECT * FROM TourTable1.WptsTable2 where gccode=12345';
querydst.SQL.Text := 'SELECT * FROM ArchivTable1.WptsTable1 WHERE 0=1'
querysrc.open;
querydst.open;
while not querysrc.Eof do
begin
  querydst.Append;
  // alle Felder eines Datensatz kopieren
  for i := 0 to querydst.Fields.Count-1 do
  begin
     feldname := querydst.Fields[i].FieldName;
     querydst[feldname] := querysrc[feldname];
  end;
  querydst.Post;
  querysrc.Next;
end;
Den Code habe ich ohne Delphi-IDE geschrieben; es können also noch Fehler drin sein.
Es gibt auch noch etwas schnellere Verfahren (man erzeugt INSERT-Statements zur Laufzeit),
aber das gezeigte Verfahren ist recht einfach und passt auf alle Tabellen mit gleicher Struktur.

Furtbichler 29. Jan 2012 10:29

AW: Daten aus einer DB in eine andere DB kopieren per sql
 
Zitat:

Zitat von sx2008 (Beitrag 1148103)
Es gibt auch noch etwas schnellere Verfahren (man erzeugt INSERT-Statements zur Laufzeit)...

Nichts Anderes macht doch "MyQuery.Append" / "MyQuery.Post". Das Beispiel ist schon ok, könnte aber durch eine Kapselung in eine Transaktion schneller werden.

himitsu 29. Jan 2012 11:27

AW: Daten aus einer DB in eine andere DB kopieren per sql
 
Es gibt bestimmt auch Export/Import/Backup-Funktionen, welche man via SQL ansprechen kann.

Peter Pohmann 29. Jan 2012 13:12

AW: Daten aus einer DB in eine andere DB kopieren per sql
 
Muss es denn unbedingt SQL sein?
Mit TTdbBatchMove würde es schnell und einfach gehen.


Alle Zeitangaben in WEZ +1. Es ist jetzt 15:56 Uhr.

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz