AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Datenbanken Delphi Daten von lokaler Tabelle in Tabelle auf Server kopieren
Thema durchsuchen
Ansicht
Themen-Optionen

Daten von lokaler Tabelle in Tabelle auf Server kopieren

Ein Thema von SilverMoonGirl · begonnen am 15. Feb 2007 · letzter Beitrag vom 15. Feb 2007
Antwort Antwort
Benutzerbild von SilverMoonGirl
SilverMoonGirl

Registriert seit: 21. Aug 2003
Ort: Berlin
160 Beiträge
 
Delphi 6 Professional
 
#1

Daten von lokaler Tabelle in Tabelle auf Server kopieren

  Alt 15. Feb 2007, 09:29
Datenbank: PostgreSQL, dBase • Zugriff über: Query
Aloha

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:
Delphi-Quellcode:
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;
So gehts nicht und der Fehler: "Relation <Pfad Tabelle1> existiert nicht" ist eigentlich logisch, da sich die Tabelle ja nicht auf dem Server befindet.

Habt ihr vielleicht einen Tipp für mich, wie es anders geht? Mir fällt da nichts ein
Simone
There is no dark side of the moon really.
Matter of fact it's all dark.
.::mein Blog::.
  Mit Zitat antworten Zitat
Benutzerbild von mikhal
mikhal

Registriert seit: 11. Sep 2003
Ort: Linz am Rhein
796 Beiträge
 
Delphi 11 Alexandria
 
#2

Re: Daten von lokaler Tabelle in Tabelle auf Server kopieren

  Alt 15. Feb 2007, 12:00
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
Michael Kraemer
Computer erleichtern die Arbeit...
...und die Erde ist eine Scheibe!
  Mit Zitat antworten Zitat
Benutzerbild von SilverMoonGirl
SilverMoonGirl

Registriert seit: 21. Aug 2003
Ort: Berlin
160 Beiträge
 
Delphi 6 Professional
 
#3

Re: Daten von lokaler Tabelle in Tabelle auf Server kopieren

  Alt 15. Feb 2007, 13:00
Vielen Dank, das funktioniert

Zitat von mikhal:
Zunächst: Die Methode Open darfst du nicht für Insert-, Update- und Delete-Statements verwenden. Hier musst du ExecSQL verwenden.
Ich weiß, das ist der Teil, den ich mir nie merken kann. Ich merk das immer erst beim ausführen
Simone
There is no dark side of the moon really.
Matter of fact it's all dark.
.::mein Blog::.
  Mit Zitat antworten Zitat
marabu

Registriert seit: 6. Apr 2005
10.109 Beiträge
 
#4

Re: Daten von lokaler Tabelle in Tabelle auf Server kopieren

  Alt 15. Feb 2007, 17:15
Hallo,

bei einem Zugriff über die BDE wäre der Einsatz der Komponente TBatchMove naheliegend.

Freundliche Grüße
  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 10:15 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