German Textdatei in SQLtable einlesen

Discussion in 'German Forum' started by peternmb, Feb 19, 2015.

  1. peternmb

    peternmb Active Member Licensed User

    Hallo,

    ich versuche mich in SQL einzuarbeiten, scheitere aber schon beim einfachen Befüllen einer Tabelle.

    Die Daten hole ich als CSV-Datei, getrennt mit ; vom PC - das funktionmiert noch.
    Allerdings werden keine Daten in die SQL-Tabelle eingelesen - keine Fehlermeldung aber 0 Datensätze.

    Vielleicht kann mich jemand auf die richtige Spur bringen, hier mein Code:
    Code:
    'löscht zuerst die Tabelle falls sie existiert und erstellt sie wieder neu
    SQL1.ExecNonQuery("DROP TABLE IF EXISTS table1")
    SQL1.ExecNonQuery(
    "CREATE TABLE table1 (col1 TEXT,col2 TEXT,col3 TEXT,col4 TEXT)")
    '       
    'liest die CSV-Daten aus der Datei HBV4a.txt ein
    List.Initialize
    List.Clear
    List = File.readlist(AppDir,"HBV4a.txt")
    '
    ToastMessageShow("Es werden jetzt " & (List.Size-1) & " Datensätze eingelesen.",True)
    '
    SQL1.BeginTransaction
    Try
      
    For i = 1 To List.Size-1
          str_array = 
    List.Get(i)                 
          arr_zeile = 
    Regex.Split(";",str_array)
          SQL1.ExecNonQuery(
    "INSERT INTO table1 VALUES(arr_zeile(1),arr_zeile(2),arr_zeile(3),arr_zeile(4))")
      
    Next
      SQL1.TransactionSuccessful
    Catch
      
    Log(LastException.Message)
    End Try
    SQL1.EndTransaction
    '    
    Msgbox("Datensätze in SQL-Table = " & SQL1.ExecQuerySingleResult("SELECT count(*) FROM table1"),"Hinweis")
     
  2. klaus

    klaus Expert Licensed User

    Diese Zeile ist falsch.
    SQL1.ExecNonQuery("INSERT INTO table1 VALUES(arr_zeile(1),arr_zeile(2),arr_zeile(3),arr_zeile(4))")
    Sie muss so sein:
    SQL1.ExecNonQuery("INSERT INTO table1 VALUES('" & arr_zeile(1) & "','" & arr_zeile(2) & "','" & arr_zeile(3) & "','" & arr_zeile(4) & "')")
    oder einfacher:
    SQL1.ExecNonQuery2("INSERT INTO table1 VALUES(?, ?, ?, ?)", arr_zeile)

    Nicht getested.
     
    peternmb likes this.
  3. peternmb

    peternmb Active Member Licensed User

    Super, funktioniert - die 2.Variante ist einfacher, das hatte ich in deinem Tutorial nicht so richtig verstanden.

    Geht ja blitzschnell, ich habe ess mit 4000 Datensätzen à 4 Werten getestet - ging ratzfatz :)
     
Loading...
  1. This site uses cookies to help personalise content, tailor your experience and to keep you logged in if you register.
    By continuing to use this site, you are consenting to our use of cookies.
    Dismiss Notice