Rubrik: Datenbanken · Sonstiges | VB-Versionen: VB6 | 18.10.10 |
Import einer CSV-Datei in eine Access-Tabelle Mit Hilfe einer "schema.ini" Datei lässt sich der Inhalt einer CSV-Datei problemlos in eine Access-Tabelle einlesen, ohne dass die Spaltenreihenfolge der Access-Tabelle beachtet werden muss. | ||
Autor: Dieter Otter | Bewertung: | Views: 25.642 |
www.tools4vb.de | System: Win9x, WinNT, Win2k, WinXP, Win7, Win8, Win10, Win11 | kein Beispielprojekt |
Für das Importieren einer CSV-Textdatei verwendet man am besten die Execute-Methode des Database- bzw. Connection-Objekts - je nachdem, ob man DAO oder ADO als Datenzugriffsobjekt verwendet:
oConn.Execute "INSERT INTO [Tabellenname] " & _ "SELECT * FROM [import.csv] IN 'D:\temp\' 'Text;'"
Der Inhalt der CSV-Tabelle wird hierbei exakt in der Reihenfolge eingelssen, wie die Daten in der CSV-Datei stehen. In der CSV-Datei müssen die Daten also in der korrekten Spalten-Reihenfolge vorliegen!
Ein bisschen flexibler kann man das Ganze gestalten, indem man eine schema.ini verwendet, in der man genaue Angaben über den Aufbau der CSV-Datei festlegen kann. Die "schema.ini" Datei muss sich hierbei im gleichen Verzeichnis befinden, wie die CSV-Datei.
Aufbau der schema.ini Datei
[IMPORTBEZ] ColNameHeader=True CharacterSet=ANSI Format=Delimited(;) Col1="Name" Text Col2="EMail" Text Col3="Plz" Text Col4="Wert" Double Col5="Datum" DateTimeAuf diese Weise kann man Access also gezielt mitteilen, in welcher Reihenfolge die Felder in der CSV-Datei vorliegen und zusätzlich auch festlegen, welcher Zeichensatz und welches Feldtrennzeichen verwendet werden soll. Auch legt man über "ColNameHeader" fest, ob in der ersten Zeile der CSV-Datei die Spaltennamen angegeben sind oder nicht.
Beim Importieren muss man die Execute-Zeile nur noch wie folgt erweitern:
oConn.Execute "INSERT INTO [Tabellenname] " & _ "SELECT * FROM [import.csv] IN 'D:\temp\' 'Text;DSN=IMPORTBEZ'"