TurboBird weiterentwickelt

Forum für Fragen rund um Firebird-Software von Drittanbietern.

Moderator: martin.koeditz

Gerd
Beiträge: 271
Registriert: Di 1. Okt 2019, 17:13

Hallo.

Neu in dieser Version ist die Möglichkeit, Daten einer *.csv-Datei in eine DB-Tabelle zu importieren.
Dazu gibt es nun eine entsprechende Oberfläche - einen entsprechenden Dialog.
Erfolgreich geprüft habe ich schon mal eine CSV-Datei mit 13.977 Datensätzen. Als Trennzeichen wurden jeweils Semikolon und Pipe verwendet.
TurboBird_1264_CSV-Tabellen-Import.png
TurboBird_1264_CSV-Tabellen-Import.png (8.36 KiB) 4994 mal betrachtet
Wer also diese Funktion erst einmal prüfen möchte, sollte eine CSV-Datei heranziehen, in der auch mal ein anderes Trennzeichen (z. B. Tabulator) verwendet wird. Wäre hilfreich.

Was das Abfrage-Fenster (QueryWindow) angeht, finde ich persönlich diese Einstellungen
in der "TurboBird_x86_64-linux64-gtk2-release-v1.2.1.ini" als angenehm:

[QueryWindow]
ShowNavigator=1
BackgroundColor=clWhite
FontName=DejaVu Sans Mono (--> das ist übrigens die dicktengleiche Schrift meines Systems)
FontSize=12
FontColor=clBlack
FontStyle=

Das nur mal kurz von mir zur neuen Version von TurboBird v1264.

Ich mache hier täglich so einiges mit TurboBird und Firebird LI-V5.0.3.1683 - etwa:

:: Daten bearbeiten.
:: Tabellen editieren.
:: Datensicherung, zurzeit für Kontrollzwecke.
:: Vergleiche von Angaben, Ergebnissen und Darstellungen mit zwei anderen Admin-Programmen.)

Das Programm wächst mir dabei immer mehr ans Herz ... steckt eine Menge (Nacht)Arbeit drin. Dank an den Entwickler.


Viele Grüße
Gerd
ISQL Version: LI-V5.0.3.1683
Linux Mint 22.3 Cinnamon 6.6.4
bfuerchau
Beiträge: 628
Registriert: Mo 7. Mai 2018, 18:09
Kontaktdaten:

Hast du schon mal die Funktion "Create external Table" der Firebird probiert, die genau dies ebenso kann?
Der Vorteil ist, dass man einen "insert into mytable select * from myextern" durchführen und dabei Berechnungen, Transformierungen (Cast) usw. durchfüren kann.
Der Vorteil ist die lokale Geschwindigkeit eine Bulkloads im Gegensatz zum Single-Insert via Treiber.

Hier könnte eine Unterstützung zur Erstellung des "Create Table" nützlich sein.
Gerd
Beiträge: 271
Registriert: Di 1. Okt 2019, 17:13

bfuerchau hat geschrieben: Di 17. Feb 2026, 13:48 Hast du schon mal die Funktion "Create external Table" der Firebird probiert, die genau dies ebenso kann?
Hallo bfuerchau.

Ja, habe ich.
Das ist aber hier nicht das Thema.
Dem Programm wurde diese Importfunktion hinzugefügt und diese habe ich getestet.
Ich denke, so wie ich maurog glaube zu kennen, werden zum Thema Import in der Zukunft Erweiterungen kommen.


Viele Grüße
Gerd
ISQL Version: LI-V5.0.3.1683
Linux Mint 22.3 Cinnamon 6.6.4
maurog
Beiträge: 61
Registriert: Di 13. Mai 2025, 21:50

Vielen Dank für eure Feedbacks.

@Gerd:
Das Programm wächst mir dabei immer mehr ans Herz …
Dank an den Entwickler.
Ich denke, so wie ich maurog glaube zu kennen, werden zum Thema Import in der Zukunft Erweiterungen kommen.
Vielen Dank für die Wertschätzung und das Vertrauen – das freut mich wirklich sehr.

Ich habe dieses Projekt seit seiner Veröffentlichung im Visier:
https://forum.lazarus.freepascal.org/in ... 115.0.html

Beschreibung des Autors:
DBReader
Database files reader. Directly read data from database files. No need for SQL server, DLLs, ODBC and other API.

Supported databases:
Interbase 6, 7 (.GDB, .FDB)
Firebird 2.1 up to 3.0 (.GDB, .FDB)
Midas.dll/DataSnap/ClientDataSet (.CDS)
Paradox 3.0 up to 7.x (.DB)
dBASE/FoxPRO (.DBF)
Mapsoft data export (.GSR)
MS SQL Server (.MDF, .BAK)
MS Access/MS Jet 4 (.MDB, .ACCDB)
MS Outlook (.PST)
MS Exchange/MS ESE (.EDB)
MySQL InnoDB (.IBD)
SQLite (.DB3, .SQLITE)
Sybase SQL Anywhere (.DB)
ElevateDB/DBISAM (.DAT)
Clarion/TopSpeed (.TPS, .DAT)
RaimaDB/db_VISTA/Velocis/RDM (.DBD)“
DBReader öffnet die Datenbankdatei direkt auf Dateisystemebene, ohne dass ein Datenbankserver, Treiber oder externe Bibliotheken benötigt werden.
Ich habe das Projekt kompiliert, ausgeführt und mit einer Firebird-3-Datenbank getestet – es funktioniert einwandfrei.

Dieses Werkzeug eignet sich nicht nur als Importer. Wenn man einmal mit einer beschädigten Datenbank zu tun hat, kann es im wahrsten Sinne des Wortes lebensrettend sein.

Ich möchte nichts versprechen, was ich eventuell zeitlich nicht einhalten kann, aber die Integration dieses Projekts in TurboBird hat aktuell höchste Priorität auf meiner To-Do-Liste.

Wenn die Community konkrete Wünsche oder Vorschläge zum Thema Import hat (was, wie, welche Formate usw.), werde ich diese sehr gerne berücksichtigen.

Noch einmal vielen Dank für eure professionellen Anregungen – dieses Projekt kommt nur dank solcher Beiträge voran.

Viele Grüße
maurog
maurog
Beiträge: 61
Registriert: Di 13. Mai 2025, 21:50

*.csv-Importfunktion war bereits in der Originalversion von TurboBird implementiert. Während der Umstellung auf IBX hatte ich – wie bei vielen anderen Masken auch – diese Funktion deaktiviert, sie ist jetzt jedoch wieder aktiviert. Daher habe ich sie auch nicht in den aktuellen Changelog aufgenommen.

@bfuerchau
Der Hinweis „Hier könnte eine Unterstützung zur Erstellung des 'Create Table' nützlich sein“ ist sicherlich hilfreich und bereits auf der To-do-Liste vermerkt.

Danke,
Maurog.
jhoehne
Beiträge: 60
Registriert: Di 11. Dez 2018, 09:19

bfuerchau hat geschrieben: Di 17. Feb 2026, 13:48 Hast du schon mal die Funktion "Create external Table" der Firebird probiert, die genau dies ebenso kann?
Das Format ist aber arg begrenzt, denn es sind nur feste Feldlängen möglich und eben kein CSV. Feste Feldlängen heißt dann auch: kein BLOB.
In der Roadmap zu Firebird 6 gibt es aber den Punkt (*), auch CSV zu unterstützen.

Und natürlich gäbe es auch die Möglichkeit, CSV Import/Export durch UDRs möglich zu machen. Das wäre dann auch Server-Basiert.

(*) https://firebirdsql.org/en/roadmap, die Roadmap verweist hier auf diese Seite: https://github.com/FirebirdSQL/firebird/issues/7110
--
Joachim
bfuerchau
Beiträge: 628
Registriert: Mo 7. Mai 2018, 18:09
Kontaktdaten:

Ich habe mir mal das Projekt DbReader angesehen.
Für einen professionellen Einsatz ist das leider eher ungeeignet.
Immerhin benötigt man schon den vollen SQL-Umfang eines Servers mit allen Joins, Derived Tables " from ( select ...), Aggregierung und Gruppierung. Auch der direkte Dateizugriff ist in Multiuser-Umgebungen über Fileshares eher schlecht möglich. Dazu finde ich in der Doku nichts.
Ein ganz wesentlicher Punkt allerdings ist die Optimierung von Zugriffen bei Where/Group über die Verfügbarkeit von Indizes, und diese sind je nach Datenbank z.T. unterschiedlich realisiert.

Als Datenrettungsansatz sehe ich ein solches Tool durchaus als Ansatz, wobei eben Server eigentlich regelmäßig Sicherungen oder auch Spiegelungen durchführen sollten.

Für den Datenim- und -export haben wir in unserer Produktwelt einen kommerziellen "FTIS.Connect" entwickelt, der eben ETL-Prozesse über alle ODBC/OLEDB-Quellen und Ziele funktioniert sowie native Excel/CSV Exports/Imports durchführt. Ins besonders aber auch Zugriffe via Rest-API auf Json/XML/Csv-Onlinequellen, die dann nach ggf. erforderlichen Transforms (Formeln) in jedes OLEB-Ziel gebeamt werden können, JSON to Relational, (ohne BLOB's). Gerade für die Firebird habe ich einen Bulkload gebaut, der in einem SQL bis zu 200 Upserts (Update or Insert), Updates oder Inserts mit bis zu 2000 Parametern in einem Rutsch beamt. Die Grenze ist durch die FB bestimmt, da max. 255 Tabellen in einem SQL verwendet werden können und der Treiber oder die FB selber bei mehr als 2000 Parametern wieder langsamer wird.
Das Ganze wird via "execute block " realisiert um ggf. Duplicate-Key-Verletzungen auch ignorieren zu können, wenn gewünscht. Die Parameter werden je Insert einfach durchnummeriert.
Statt 2000 Inserts/Sekunde können durchaus 20.000 oder mehr Inserts/Sekunde erreicht werden.

Ich weiß, das war nun Eigenwerbung. Es zeigt jedoch, dass es immer wieder Parallelentwicklungen gibt. :D
maurog
Beiträge: 61
Registriert: Di 13. Mai 2025, 21:50

@bfuerchau
Ich war gerade dabei, Folgendes zu posten – da warst Du schneller als ich :-)
@bfuerchau
Ich habe Dich gestern leider falsch bzw. gar nicht richtig verstanden. Mir war nicht bewusst, dass der Firebird-Server selbst solche Bulk-Import- und Export-Operationen durchführen kann. Ich werde mir das auf jeden Fall genauer ansehen und – wenn möglich – auch umsetzen. Vielen Dank, wieder etwas gelernt!

@Joachim
Ja, ein UDR ist sicherlich ebenfalls eine gute Idee.

Was den Import betrifft: Turbobird unterstützt derzeit leider nur einen einfachen CSV-Import (zeilenweise). Hier werde ich also noch etwas entwickeln müssen, sobald ich Zeit dafür finde.

Ich werde zunächst ein wenig experimentieren, um besser zu verstehen, wie das Ganze funktioniert.

Vielen Dank für eure Anregungen!

Grüße
Maurog.
Ich habe mir alle Punkte notiert und werde mir – wie oben erwähnt – die Vorgehensweisen und Ansätze noch genauer ansehen, um deren Funktionsweise und Möglichkeiten besser zu verstehen.
Ich weiß, das war nun Eigenwerbung.
völlig verständlich und absolut in Ordnung :-)

Viele Grüße,
Maurog.
Antworten