首页 > 解决方案 > 使用 VB.net 在 SQLite 中导入 CSV

问题描述

我有一个问题,希望有人能帮助我。我用 Visual Basic 创建了一个程序,并希望将 CSV 文件导入 SQLite 数据库。我找到了这个链接: How to bulk insert a CSV file into SQLite C# 代码在 C# 中,我在 VB 中重写了它。

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

我想我理解代码,但我这里有问题。

 System.Data.SQLite.SQLiteHelper 

我正在使用 System.Data.SQLite,它不知道这个命令。这是一个单独的库吗?如果是,我在哪里可以找到这些库,这在 VB 中是否也有效?正如我所说,我想将 CSV 文件导入 SQLite 数据库。它知道,它也适用于 sqlite3.exe,但该程序应该在几台不同的计算机上运行,​​因为我发现很难指定确切的路径,如链接中所述。从理论上讲,我必须: 1. 打开 CSV 2. 删除带有列名的顶行 3. 单独阅读每一行 4. 将其传输到 SQLite。由于 SQLite 似乎无法“批量插入”,因此第 3 和第 4 必须处于循环中。理论到此为止。我是一个血腥的初学者,不知道如何将它实现为代码。有没有人有一个例子,如果可能的话,在 VB.net 中,尽管在互联网上搜索了几个小时,但我发现什么也没有。或者有人可以给我一个关于如何以不同方式做的提示。正如我所说,我是一个该死的初学者,非常感谢任何形式的帮助。

标签: vb.netsqlitecsv

解决方案


推荐阅读