![]() |
Datenbank: Foxpro SQlite • Version: ? • Zugriff über: Tadoquery, TFDQuery
Tabellenstruktur schnell kopieren
Hallo,
ich möchte eine uralte Foxpro-Datenbank nach SQLite kopieren. Mein Ansatz war so etwa:
Delphi-Quellcode:
Und dann Datensatz für Datensatz, Feld für Feld kopieren...var queryoriginal: Tadoquery; queryexport: TFDQuery; .... for f := 0 to queryoriginal.Fields.Count - 1 do begin ft := queryoriginal.Fields[f].DataType; fn := queryoriginal.Fields[f].FieldName; if not Assigned(queryexport.FindField(fn)) then begin SQL := 'ALTER TABLE Termine ADD ' + fn; case ft of ftString: SQL := SQL + ' TEXT'; ftSmallint: SQL := SQL + ' INTEGER'; ftInteger: SQL := SQL + ' INTEGER'; ..... ftByte: SQL := SQL + ' INTEGER'; ftExtended: SQL := SQL + ' FLOAT'; ftSingle: SQL := SQL + ' FLOAT'; else showmessage('Feldtyp nicht implementiert !'); end; // case queryexport.SQL.Text := SQL; queryexport.ExecSQL; end; // Assigned end; // Fieldcount Gibt es da was schnelleres, was die Struktur (oder gleich die gesamte DB) kopiert? Ciao Stefan |
AW: Tabellenstruktur schnell kopieren
Kommt drauf an, wie Du es einsetzen möchtest.
Einmalig? Innherhalb eines Programms, Endanwender, Migration von alter Version auf neue? Schnell ist meist die Verwendung von Textexport & -import en block. Wie immer muss auf Feldtypen und besonders DB spezifische Feldtypen bei der Konvertierung geachtet werden. Was Foxpro da bietet (export), weiß ich aber nicht. |
AW: Tabellenstruktur schnell kopieren
Der Einsatz ist "ständig", das bestehende Programm auf Windows PC arbeitet nach wie vor mit der dbf-Datei, für mobile Anwendungen soll zyklisch der aktuelle Inhalt der dbf nach SQLite exportiert werden...
Ciao Stefan |
AW: Tabellenstruktur schnell kopieren
Der Ansatz oben im Code ist ja erstmal dynamisch(!) eine Tabellenstruktur zu definieren. Ist das notwendig? Ändert sich das Foxpro System häufig?
Wenn nicht, habe ich statische Ausgangsstruktur und statische Zielstruktur, letztere kann fertig in einer "leeren" sqlite Datei liegen, bereit für eine (Datei-)Kopie und frische Befüllung. Schau mal für sqlite nach:
Code:
Die entstehende Tabelle ist u.U. nicht hinreichend strukturiert, kann aber dann nach Bedarf innerhalb sqlite mit insert into finalezieltabelle (<fieldlist>) (select from importabelle) übernommen werden.
sqlite> .mode csv
-- und sqlite>.import c:/sqlite/daten.csv importtabelle U.U. hilfreich ist dabei die Möglichkeit, dass sqlite eine Funktionalität hat, um verschiedene DB (sprich einzelne sqlite Dateien) untereinander bekannt zu machen und simultan zugreifbar (Stichwort "ATTACH DATABASE"). Wie Du aus foxpro einen flatfile csv export bekommst, weißt Du vielleicht selbst besser als ich. |
AW: Tabellenstruktur schnell kopieren
Vielleicht kann CopyDataSet hier helfen:
![]() |
AW: Tabellenstruktur schnell kopieren
Hallo,
das klingt ja sehr interessant! Das werde ich mir mal genauer ansehen :-) Ciao Stefan |
Alle Zeitangaben in WEZ +1. Es ist jetzt 14:44 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-2025 by Thomas Breitkreuz