Hallo,
Ich habe eine Frage und hoffe, dass mir geholfen werden kann.
Ich erstelle eine Programm mit Visual Basic und will eine CSV-Datei in eine SQLite-Datenbank einlesen.
Ich habe dazu diesen Link gefunden:
stackoverflow.com/questions/26…-file-into-sqlite-c-sharp
Der Kode ist in C#, ich habe ihn in VB umgeschrieben.
Ich verstehe ihn insofern, mir berietet aber Zeile 16 Probleme.
Ich verwende System.Data.SQLite, das kennt diesen Befehl nicht. Ist dies eine gesonderte Bibliothek, wenn ja, wo kann ich diese Finden und geht dies auch in VB.?
Wie gesagt, ich möchte CSV-Dateien in eine SQLite-Datenbank importieren.
Es geht auch mit sqlite3.exe, aber das Programm soll auf mehreren verschiedenen Rechnern funktionieren, da stelle ich es mir schwer vor, einen genauen Pfad anzugeben, wie auch in dem Link beschrieben.
Theoretisch müsste ich:
1. die CSV öffnen
2. die oberste Zeile mit den Spaltennahmen löschen
3. jede Zeile einzeln auslesen
4. dies in SQLite übertragen.
Da SQLite anscheinend kein "Bulk-Insert" kann, muss 3. und 4. als Schleife erfolgen.
Soweit die Theorie.
Ich bin blutiger Anfänger und habe keinerlei Idee, wie ich das als Kode umsetzen soll. Hat jemand dafür ein Beispiel, möglichst in VB.net, ich habe trotz mehrstündiger Suche nicht gefunden. Oder kann mir jemand einen Tipp geben, wie es anders gehen soll. Wie gesagt, ICh bin blutiger Anfänger und für jede art von Hilfe sehr dankbar.
Ich habe eine Frage und hoffe, dass mir geholfen werden kann.
Ich erstelle eine Programm mit Visual Basic und will eine CSV-Datei in eine SQLite-Datenbank einlesen.
Ich habe dazu diesen Link gefunden:
stackoverflow.com/questions/26…-file-into-sqlite-c-sharp
Der Kode ist in C#, ich habe ihn in VB umgeschrieben.
VB.NET-Quellcode
- Public Sub LoadCheckFiletoDatabase(ByVal checkFilePath As String)
- Dim tempTable As DataTable = GetDataTableFromCsv(checkFilePath)
- For Each DataR As DataRow In Me.memDataTable.Columns
- Dim Dic As Dictionary(Of String, Object) = New Dictionary(Of String, Object)()
- For Each DataCol As DataColumn In Me.memDataTable.Columns
- Dim field As String = DataCol.ColumnName.ToString()
- Dim value As Object = CStr(DataR(DataCol).ToString())
- Dic.Add(field, value)
- Next
- Using sQLiteConnection As SQLiteConnection = New SQLiteConnection("data source=" & databasepath)
- Using sQLiteCommand As SQLiteCommand = New SQLiteCommand(sQLiteConnection)
- Dim sQLiteHelper As System.Data.SQLite.SQLiteHelper = New SQLiteHelper(sQLiteCommand)
- sQLiteHelper.BeginTransaction()
- sQLiteHelper.Insert(tempTable.TableName, Dic)
- End Using
- Public Shared Function GetDataTableFromCsv(ByVal path As String) As DataTable
- Dim pathOnly As String = Path.GetDirectoryName(path)
- Dim fileName As String = Path.GetFileName(path)
- Dim sql As String = "SELECT * FROM [" & fileName & "]"
- Using connection As OleDbConnection = New OleDbConnection("Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & pathOnly & ";Extended Properties=""Text;HDR=" & "Yes" & """")
- Using command As OleDbCommand = New OleDbCommand(sql, connection)
- Using adapter As OleDbDataAdapter = New OleDbDataAdapter(command)
- Dim dataTable As DataTable = New DataTable()
- dataTable.Locale = CultureInfo.CurrentCulture
- adapter.Fill(dataTable)
- dataTable.TableName = fileName.TrimEnd(New Char() {"."c, "c"c, "s"c, "v"c})
- Return dataTable
- End Using
- End Using
- End Using
Ich verstehe ihn insofern, mir berietet aber Zeile 16 Probleme.
Ich verwende System.Data.SQLite, das kennt diesen Befehl nicht. Ist dies eine gesonderte Bibliothek, wenn ja, wo kann ich diese Finden und geht dies auch in VB.?
Wie gesagt, ich möchte CSV-Dateien in eine SQLite-Datenbank importieren.
Es geht auch mit sqlite3.exe, aber das Programm soll auf mehreren verschiedenen Rechnern funktionieren, da stelle ich es mir schwer vor, einen genauen Pfad anzugeben, wie auch in dem Link beschrieben.
Theoretisch müsste ich:
1. die CSV öffnen
2. die oberste Zeile mit den Spaltennahmen löschen
3. jede Zeile einzeln auslesen
4. dies in SQLite übertragen.
Da SQLite anscheinend kein "Bulk-Insert" kann, muss 3. und 4. als Schleife erfolgen.
Soweit die Theorie.
Ich bin blutiger Anfänger und habe keinerlei Idee, wie ich das als Kode umsetzen soll. Hat jemand dafür ein Beispiel, möglichst in VB.net, ich habe trotz mehrstündiger Suche nicht gefunden. Oder kann mir jemand einen Tipp geben, wie es anders gehen soll. Wie gesagt, ICh bin blutiger Anfänger und für jede art von Hilfe sehr dankbar.