.txt in Datenbank einlesen und nach Semikolon trennen

  • Access

Es gibt 16 Antworten in diesem Thema. Der letzte Beitrag () ist von Schnucki_84.

    .txt in Datenbank einlesen und nach Semikolon trennen

    Hallo zusammen,

    ich bin neu hier im Forum und hoffe, dass mein Beitrag hier an der richtigen Stelle ist.

    Ich habe folgendes Problem:

    Ich habe eine Textdatei mit mehreren Zeilen. Jede Zeile hat Einträge die durch ein ; getrennt sind.

    Bsp.: Land;Beschreibung;Wetter;...;...;...

    Wenn ich jetzt diese Datei in meine Datenbank einlese und als Tabelle speichern möchte, wird genau eine Spalte ausgegeben :( es soll jedoch nach jedem ; getrennt werden und dann eine neue Spalte dafür ausgegeben werden.

    Google konnte mir bis jetzt keinen passenden Tipp liefern, wie ich dieses umsetzen kann. Ich muss auch gestehen, dass ich blutige Anfängerin in der Programmierung bin und bin über jeden Tipp sehr dankbar.

    Schonmal vielen Dank für eure Hilfe :)


    Visual Basic-Quellcode

    1. Dim catalog As New Catalog()
    2. Dim da As New OleDbDataAdapter
    3. Dim ds As New DataSet
    4. Try
    5. 'Datenbank erstellen
    6. catalog.Create("Provider=Microsoft.Jet.OLEDB.4.0;" & "Data Source=C:\Users\...\test.mdb;" & "Jet OLEDB:Engine Type=4")
    7. Dim conn As New OleDbConnection("Provider=Microsoft.Jet.OLEDB.4.0; Data Source=C:\Users\...\test.mdb")
    8. Dim cmd As New OleDbCommand("SELECT * INTO [ProdInfo1] FROM [Text;DATABASE=C:\Users\...\;HDR=no].[text.txt]", conn)
    9. conn.Open()
    10. cmd.ExecuteNonQuery()
    11. conn.Close()
    12. Catch ex As ExceptionMessageBox.Show("Information" & vbCrLf & ex.Message, "Hinweis", MessageBoxButtons.OK, MessageBoxIcon.Information)
    13. End Try
    Hi petaod,

    danke für deine schnelle Antwort.

    Wenn ich das in den connectionstring einfüge bekomme ich die Meldung "Instalierbares ISAM nicht gefunden" :(

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von „Schnucki_84“ ()

    Auch mal mit Delimited( ; ) versucht?

    Ansonsten würde ich fürs Erste ohne VB testen.
    Zunächst mal den SQL-Befehl auf der DB direkt ausprobieren.

    Wie ist denn ProdInfo1 definiert? Alle Felder vorhanden?

    Wenn's die DB überhaupt nicht schafft, kannst du immer noch die Records einzeln einlesen, splitten und recordweise in die Tabelle einfügen.
    Zugegeben ist das eine sehr holprige Methode, aber bevor du daran verzweifelst...
    --
    If Not Program.isWorking Then Code.Debug Else Code.DoNotTouch
    --

    Dieser Beitrag wurde bereits 2 mal editiert, zuletzt von „petaod“ ()

    Ja habe schon verschiedenes versucht.
    Mittlerweile bekomme ich eine neue Fehlermeldung "Das Format der Initialisierungszeichenfolge stimmt nicht mit der Spezifikation überein, die bei Index 33 beginnt."

    Kann doch nicht so schwer sein ;(
    Wenn ich eine Tabelle definiere und dann in meiner Select-Abfrage sage ... INTO[] ... bekomme ich den Hinweis, dass die Tabelle bereits vorhanden ist.

    Entweder denke ich zu kompliziert oder programmieren wird nicht mein Ding werden :(
    Habe mir jetzt eine Tabelle angelegt und den einzelnen Spalten Typen zugewiesen.
    Anschließend über die Insert Into Methode versucht die Daten aus der Text-Datei der Tabelle zuzufügen wie aus deinem Link und wieder ein Fehler....
    "Für mindestens einen erforderlichen Pramater wurde kein Wert angegeben."

    Was mache ich denn Falsch?

    Visual Basic-Quellcode

    1. Dim cmd As New OleDbCommand("INSERT INTO [ProdInfo] (F1, F2, F3, F4, F5, F6) SELECT F1, F2, F3, F4, F5, F6 FROM [Text;HDR=NO;Format=CSVDelimited;DATABASE=C:\Users\...\].[test.txt]", conn)
    Erzeuge spaßhalber mal eine CSV, die mit Komma anstatt Semikolon separiert ist.
    Ich könnte mir vorstellen, dass "Format=CSVDelimited" ein Komma erwartet (CSV=Comma Separated Value).
    Wenn er diese einliest, weißt du schon mal, dass du am Format-Parameter drehen musst.
    --
    If Not Program.isWorking Then Code.Debug Else Code.DoNotTouch
    --
    Ich möchte mich nochmal recht herzlich bei dir petaod bedanken für deine Hilfe.
    Ich setze das Thema auf erledigt, da es sich für mich erledigt hat, auch wenn ich keine funktionierende Lösung gefunden habe.

    Wünsche euch alles Gute und weiterhin viel Spaß.

    LG Schnucki