CSV Datei in Access Datenbank importieren

  • VB.NET
  • .NET (FX) 4.5–4.8

Es gibt 14 Antworten in diesem Thema. Der letzte Beitrag () ist von estadl.

    CSV Datei in Access Datenbank importieren

    Hallo, finde einfach keine Lösung bzw. Anleitung wie ich Dateien richtig einlesen kann.

    Habe eine Access Datenbank erstellt mit Feldern wie in Zeile 5.

    Die Datei, die ich täglich einlesen muss, beginnt ab der 6. Zeile mit Daten. Kann mir jemand dabei helfen.
    Vielleicht hat jemand eine kleine Beispieldatenbank von Access, wo ich mein Szenario finden kann.
    Weiters möchte ich, dass bei Longitude und Latitude nur die ersten sieben Zeichen gespeichert werden, als statt E13.92040;N47.99880 nur E13.920;N47.998

    Ein großes Danke im voraus und liebe Grüße aus Österreich.

    0306-00675;24.09.2019;04:44:28;24.09.2019;15:31:05;;;;;;;;;;;;;;;;;;;;;;;;
    Probe;Straße;Ort;;;;;;;;;;;;;;;;;;;;;;;;;;
    Total boarded;369;;;;;;;;;;;;;;;;;;;;;;;;;;;
    Total deboarded;359;;;;;;;;;;;;;;;;;;;;;;;;;;;
    Quality (In/Out);01. Mrz;;;;;;;;;;;;;;;;;;;;;;;;;;;
    Date;Time;Longitude;Latitude;Line;Course;Station;First open;Last close;Duration;Boarded;Deboarded;Load;In(1);Out(1);In(2);Out(2);In(3);Out(3);In(4);Out(4);In(5);Out(5);In(6);Out(6);In(7);Out(7);In(8);Out(8)
    24.09.2019;04:44:28;INVALID;INVALID;161;370;NONE;04:44:28;04:44:38;00:10;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0
    24.09.2019;04:44:46;INVALID;INVALID;161;370;NONE;04:44:46;04:44:59;00:13;0;1;-1;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;1
    24.09.2019;04:58:26;E13.92040;N47.99880;161;370;NONE;04:58:26;04:58:39;00:13;1;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;1;0
    24.09.2019;05:04:03;E13.92051;N47.99861;161;305;NONE;05:04:03;05:04:14;00:11;0;1;-1;0;0;0;0;0;0;0;0;0;0;0;0;0;1;0;0
    24.09.2019;05:18:48;E13.92054;N47.99854;161;305;NONE;05:18:48;05:18:59;00:11;1;0;0;1;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0
    24.09.2019;05:19:39;E13.92054;N47.99854;161;305;NONE;05:19:39;05:19:55;00:16;1;0;1;1;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0
    24.09.2019;05:25:12;E13.92064;N47.99836;161;305;NONE;05:25:12;05:25:25;00:13;2;0;3;2;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0
    24.09.2019;05:33:08;E13.89197;N47.96374;161;305;NONE;05:33:08;05:33:19;00:11;1;0;4;0;0;0;0;0;0;1;0;0;0;0;0;0;0;0;0
    24.09.2019;05:36:00;E13.88049;N47.95252;161;305;NONE;05:36:00;05:36:13;00:13;2;0;6;0;0;0;0;0;0;0;0;0;0;1;0;0;0;1;0
    24.09.2019;05:39:40;E13.86133;N47.94101;161;305;NONE;05:39:40;05:39:51;00:11;1;0;7;0;0;0;0;0;0;0;0;0;0;1;0;0;0;0;0
    24.09.2019;05:41:39;E13.84798;N47.93555;161;305;NONE;05:41:39;05:41:52;00:13;2;0;9;0;0;0;0;0;0;0;0;0;0;2;0;0;0;0;0

    Dieser Beitrag wurde bereits 3 mal editiert, zuletzt von „estadl“ ()

    Hi,

    wo genau hapert es denn? Beim Lesen der CSV? Beim schreiben in eine Datenbank?
    Es war einmal ein kleiner Bär... der wollte eine Geschichte hörn... Da erzählte ihm seine Mutti:
    Es war einmal ein kleiner Bär... der wollte eine Geschichte hörn... Da erzählte ihm seine Mutti:
    Es war einmal ein kleiner Bär... der wollte eine Geschichte hörn... Da erzählte ihm seine Mutti:
    ... Nun solltest es selber wissen. :'D
    Hallo, bin totaler Neuling, kann nur Abfragen in Access erstellen. Habe bisher die Datei in Excel bearbeitet und dann in Access importiert.
    Möchte mir gerne das händische Löschen der ersten 6 Zeilen und das händische Ändern der Kürzung von Longitude, Latitude ersparen.
    Okay. Also mit nem StreamReader kannst du Daten einlesen.
    Der besitzt auch ne ReadLine Funktion, mit der du die Daten Zeile für Zeile einlesen kannst.
    Alternativ kannst auch recht simpel CSV-Dateien importieren (dabei ist es wichtig, dass das CSV-Trennzeichen in Windows entsprechend gesetzt ist; findet man unter Software\Wow6432Node\Microsoft\Jet\4.0\Engines\Text\Format und heißt da Delimited(,), Delimited(;) oder was auch immer drin steht) und dann die ersten Zeilen nach dem Import verwerfen.
    Oder du liest die Daten alle ein, löscht die ersten Zeilen und speicherst die Datei anschließend um sie wiederum zu importieren.
    Alles ist möglich. Die Frage ist eher, wie du vorgehen möchtest.
    Wenn es konkrete Fragen gibt, wird dir sicher geholfen. Aktuell sieht es weniger nach Fragen, als etwas für den Marktplatz aus (also wer anders soll es machen).

    Der Erfinder hat diverse Tutorials gemacht, wie man Daten in ne Datenbank bekommt (in der Forumrubrik für Tutorials / Datenbanken).

    VB.NET und Datenbanken: die vier Views auf Video

    CSV-Dateien einlesen: Csv importieren
    Es war einmal ein kleiner Bär... der wollte eine Geschichte hörn... Da erzählte ihm seine Mutti:
    Es war einmal ein kleiner Bär... der wollte eine Geschichte hörn... Da erzählte ihm seine Mutti:
    Es war einmal ein kleiner Bär... der wollte eine Geschichte hörn... Da erzählte ihm seine Mutti:
    ... Nun solltest es selber wissen. :'D

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

    Hier ein kleines VBA-Programm, das eine neue Datei im gewünschten Format erstellt.

    Visual Basic-Quellcode

    1. Sub test()
    2. Dim t$, Datei$, DateiNeu$, Pfad$
    3. Dim i&, arr() As String
    4. Dim FSO As Object, File As Object, FileNeu As Object
    5. Datei = "csv.txt" '<--- anpassen
    6. DateiNeu = "Neu.txt" '<--- anpassen
    7. Pfad = "d:\#0\" '<--- dein Pfad "\" am Ende!
    8. Set FSO = CreateObject("Scripting.FileSystemObject")
    9. Set File = FSO.OpenTextFile(Pfad & Datei, 1)
    10. Set FileNeu = FSO.OpenTextFile(Pfad & DateiNeu, 2, True)
    11. For i = 1 To 5
    12. File.skipline
    13. Next
    14. Do Until File.AtEndOfStream
    15. t = File.ReadLine
    16. arr = Split(t, ";")
    17. arr(2) = Left$(arr(2), 7)
    18. arr(3) = Left$(arr(3), 7)
    19. t = Join(arr, ";")
    20. FileNeu.Writeline t
    21. Loop
    22. MsgBox "Fertig"
    23. FileNeu.Close
    24. File.Close
    25. End Sub
    Meinst du so?


    Visual Basic-Quellcode

    1. Sub test()
    2. Dim t$, Datei$, DateiNeu$, Pfad$
    3. Dim i&, arr() As String, u&
    4. Dim FSO As Object, File As Object, FileNeu As Object
    5. Datei = "csv.txt" '<--- anpassen
    6. DateiNeu = "Neu.txt" '<--- anpassen
    7. Pfad = "d:\#0\" '<--- dein Pfad "\" am Ende!
    8. 'Datei = Application.GetOpenFilename("Text Files (*.txt), *.txt")
    9. 'If Len(Datei) = 0 Then
    10. ' MsgBox "Open " & fileToOpen
    11. 'End If
    12. Set FSO = CreateObject("Scripting.FileSystemObject")
    13. Set File = FSO.OpenTextFile(Pfad & Datei, 1)
    14. Set FileNeu = FSO.OpenTextFile(Pfad & DateiNeu, 2, True)
    15. For i = 1 To 5
    16. File.skipline
    17. Next
    18. If Not File.AtEndOfStream Then
    19. t = File.ReadLine
    20. arr = Split(t, ";")
    21. u = UBound(arr)
    22. ReDim Preserve arr(u + 1)
    23. For i = u + 1 To 12 Step -1
    24. arr(i) = arr(i - 1)
    25. Next
    26. arr(12) = "GEO"
    27. t = Join(arr, ";")
    28. FileNeu.Writeline t
    29. End If
    30. Do Until File.AtEndOfStream
    31. t = File.ReadLine
    32. arr = Split(t, ";")
    33. arr(2) = Left$(arr(2), 7)
    34. arr(3) = Left$(arr(3), 7)
    35. ReDim Preserve arr(u + 1)
    36. For i = u + 1 To 12 Step -1
    37. arr(i) = arr(i - 1)
    38. Next
    39. arr(12) = arr(2) & arr(3)
    40. t = Join(arr, ";")
    41. FileNeu.Writeline t
    42. Loop
    43. MsgBox "Fertig"
    44. FileNeu.Close
    45. File.Close
    bekomme in der Zeile 40 einen Laufzeitfehler 9


    Bei der obigen Zeile 40

    Visual Basic-Quellcode

    1. arr(3) = Left$(arr(3), 7)
    kann ich mir das nicht vorstellen.

    Ich vermute eher Leerzeilen (auch am Ende der Datei) oder Zeilen ohne oder mit zuwenig Trennzeichen ";".

    Wenn es keine Geheimsachen sind, kannst du ja eine Datei anhängen.

    Zum testen kannst du mal 'On Error Resume next' am Anfang des Codes einfügen.
    Dann aber die Dateien genau vergleichen.