CSV Datenimport
Das Tool
IBExpert erlaubt in der aktuellen Version den Import von *.csv Dateien (csv steht für Comma separated values
- *.csv-Dateien sind quasi der "kleinste gemeinsame Nenner" von
Datenbankprogrammen und Tabellenkalkulationen wie Paradox, Access,
Excel und dergleichen). Mit dem Import dieses Dateiformats steht dem
Anwender eine einfache Möglichkeit offen, Tabellendaten in eine
Firebird-Datenbank zu importieren.
- Eine csv-Datei enthält in der ersten Zeile die Feldnamen, darunter in allen weiteren Zeilen die Datensätze selbst
- Die Trennung der einzelnen Feldwerte kann durch Semikolon (Strichpunkt) oder durch Komma erfolgen. Also z.B.:
Name;Vorname;Email
Ballack;Michael;mb@bayern-muenchen.de
Beckenbauer;Franz;kaiser@bayern-muenchen.de
Müller;Gerd;bomber@bayern-muenchen.de
Vorbereitung der einzulesenden Daten
Die zu importierenden Daten müssen bestimmte Bedingungen erfüllen:
- Keine UNIX Dateien (Zeilenumbrüche!)
- Alle Feldwerte, die ihrerseits Sonderzeichen (also Semikolon, Komma, Umlaute etc.) enthalten, müssen "gequotet", d.h. in doppelte Anführungszeichen gesetzt werden. Die Feldwerte selbst dürfen keine Doublequotes enthalten!
- Die Anzahl der Felder in jeder Zeile muss genau der Anzahl der Felder in der ersten Zeile der csv-Datei entsprechen
Dies bedeutet:
Wenn Sie Ihre csv-Datei auf einem UNIX/LINUX System erzeugt haben, muss
sie ins Windowsformat konvertiert werden. UNIX hat einen anderen
Zeilenumbruch. Laden Sie ggfs. die gesamte Datei in einen UNIX-fähigen
Editor (TextPad, UltraEdit o.ä.) und kopieren Sie den gesamten
Dateiinhalt mit Copy/Paste in ein neues Fenster.
TextPad kann auch direkt eine UNIX-Datei im PC-Format abspeichern.
Die Feldwerte, die Sonderzeichen enthalten, müssen "gequotet" werden. Unsere obige Tabelle sieht dann so aus:
Name;Vorname;Email
Ballack;Michael;"mb@bayern-muenchen.de"
Beckenbauer;Franz;"kaiser@bayern-muenchen.de"
"Müller";Gerd;"bomber@bayern-muenchen.de"
Es ist auch kein Fehler, wenn alle Feldwerte gequotet sind.
Die Anzahl der Feldwerte in einer Zeile muss genau der Anzahl der Feldnamen in der ersten Zeile entsprechen. Sie bekommen sonst beim Import einen Fehler " ..out of bounds" und der Datensatz wird nicht in die Firebird-Tabelle übernommen.
Falsch wäre daher eine solche Tabelle:
Name;Vorname;Email
Ballack;Michael;"mb@bayern-muenchen.de"
Beckenbauer;Franz;"kaiser@bayern-muenchen.de";; # hier werden zwei weitere Felder erwartet
"Müller";Gerd;" # hier fehlt der dritte Feldwert
Entspricht die csv-Datei den o.a. Anforderungen, kann Sie in eine Firebird-Tabelle konvertiert werden. Dazu muss keine namensgleiche Tabelle in der Datenbank existieren; diese wird ggfs. neu erzeugt.
- Starten Sie "IBExpert" und verbinden Sie sich mit Ihrer Firebird-Datenbank
- Rufen Sie mit <STRG>+F12 den SQL-Scripteditor auf
- Geben Sie folgende Zeile ein:
INSERTEX INTO Kontakte from csv 'C:\Kontakte.csv' skip 1; # nicht das abschliessende Semikolon vergessen! - Beachten Sie die single-quotes, in die der Dateiname gesetzt sein muss. Die obige Zeile ist nur ein Beispiel ..
- Starten Sie den Importvorgang mit F9 oder durch Anklicken des kleinen grünen Pfeils im SQL-Editor
IBExpert erstellt nun eine neue Tabelle Kontakte (es sei denn, diese war schon vorhanden), in der alle Felder vom Typ VARCHAR(255) sind. Dies kann man nachträglich von Hand ändern.
Durch die Anweisung skip 1 wurde die erste Zeile der csv-Datei sinnvollerweise nicht mit übernommen.
Vielen Dank für den Text an Ulrich Nehls, 3.7.2003




