Subject SQLite to DbF
From Ralf Krieg <krieg@lehmann-partner.de>
Date Thu, 16 Feb 2023 07:25:35 -0500
Newsgroups dbase.getting-started

Hallo zusammen,

ich habe ein Problem mit der Verarbeitung von Tabellen aus SQLite Datenbanken.

Meine Umgebung:
dBASE Plus 8 build 2345
BDE 5.202
ODBC Treiber - SQLite3 ODBC Driver 0.9998.00.00 von Christian Werner Software

Die Aufgabe:
Es ist eine beliebige Anzahl Tabellen, bestehend aus max. 585 Tabellen aus der SQLite DB nach Dbf4 zu kopieren und auch umgekehrt von Dbf4 nach SQLite. Für die Tabellenstrukturen gibt es vorhandene Ordner mit leeren Tabellen jeweils als DbF und auch als SQLite.

Das Problem:
Die SQLite DB kennt für Textfelder nur den Datentyp "Text" und da kann alles mögliche drin stehen von 1 Zeichen bis 32 Kbyte. Praktisch gibt es aber nur Inhalte bis 254 Zeichen.
Die BDE erkennt diese Textfelder über den ODBC Treiber immer als Felder vom Typ "Memo". Ich habe verschiedene Methoden ausprobiert diese Tabellen von SQLite nach dbF zu kopieren. Über die alte dBASE DML per "append from", aber auch per ODML über ein "updateSet".
Tabellen bis ca. 300.000 Datensätze lassen sich so kopieren, bei größeren Tabellen gibt es Fehlermeldungen der BDE bezüglich der Ressourcen.
Die BDE hatte ich schon auf Maximalwerte konfiguriert - ohne Erfolg.
Als nächstes hatte ich versucht über ADO (gleiche ODBC Quelle) die Daten zu kopieren. Ohne Erfolg.

Inzwischen verarbeite ich Sätze mit kleinen Tabellen mit meiner dBASE Anwendung, fange die Fehler ab und protokolliere Diese. Die Tabellen, die sich so nicht zu verarbeiten lassen, lade ich manuell über die gleiche ODBC DSN in MS Access, ändere dort die Struktur (z.B. longvarchar, nach varchar) und exportiere diese dann nach dbf4.

Da dieser Workaround nervig ist, stelle ich meine Frage an alle. Gibt es einen anderen Weg SQLite nach dbf zu konvertieren?
Funktioniert der Zugriff über ADO bei neueren dBASE Versionen vielleicht besser?

Viele Grüße
Ralf Krieg