AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Datenbanken Delphi Daten aus einer DB in eine andere DB kopieren per sql
Thema durchsuchen
Ansicht
Themen-Optionen

Daten aus einer DB in eine andere DB kopieren per sql

Ein Thema von BBoy · begonnen am 28. Jan 2012 · letzter Beitrag vom 29. Jan 2012
Antwort Antwort
BBoy

Registriert seit: 17. Jan 2007
418 Beiträge
 
Delphi 10 Seattle Professional
 
#1

Daten aus einer DB in eine andere DB kopieren per sql

  Alt 28. Jan 2012, 14:44
Datenbank: TurboDB • Version: 5 • Zugriff über: TurboDB
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:
      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.

Geändert von BBoy (28. Jan 2012 um 22:49 Uhr)
  Mit Zitat antworten Zitat
Benutzerbild von sx2008
sx2008

Registriert seit: 16. Feb 2008
Ort: Baden-Württemberg
2.332 Beiträge
 
Delphi 2007 Professional
 
#2

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

  Alt 29. Jan 2012, 02:38
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.
  Mit Zitat antworten Zitat
Furtbichler
(Gast)

n/a Beiträge
 
#3

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

  Alt 29. Jan 2012, 11:29
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.
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.184 Beiträge
 
Delphi 12 Athens
 
#4

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

  Alt 29. Jan 2012, 12:27
Es gibt bestimmt auch Export/Import/Backup-Funktionen, welche man via SQL ansprechen kann.
$2B or not $2B
  Mit Zitat antworten Zitat
Peter Pohmann

Registriert seit: 26. Sep 2004
14 Beiträge
 
#5

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

  Alt 29. Jan 2012, 14:12
Muss es denn unbedingt SQL sein?
Mit TTdbBatchMove würde es schnell und einfach gehen.
Peter Pohmann
Software-Architekt (dataweb)
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 12:38 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