加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 大数据 > 正文

OLEDB将CSV导入VB.NET数据表读取’ – ‘为0

发布时间:2020-12-17 00:05:07 所属栏目:大数据 来源:网络整理
导读:问候有用的令人愉快的人, 我在读取CSV文件和转换为VB.Net中的数据表时遇到问题. 如果CSV文件包含一个完整的“ – ”列,则在导入数据表时它们显示为“0”,整个列的格式为数字格式. 我写的代码是: Public Function LoadCsvFile(filePath As String) As DataTa
问候有用的令人愉快的人,

我在读取CSV文件和转换为VB.Net中的数据表时遇到问题.
如果CSV文件包含一个完整的“ – ”列,则在导入数据表时它们显示为“0”,整个列的格式为数字格式.

我写的代码是:

Public Function LoadCsvFile(filePath As String) As DataTable
    Try

        DTReadCSV = New DataTable

        Dim connection As System.Data.OleDb.OleDbConnection = New System.Data.OleDb.OleDbConnection("Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" & Microsoft.VisualBasic.Left(filePath,InStrRev(filePath,"")) & ";Extended Properties=""text;HDR=Yes;FMT=Delimited""")

        Dim adapter As New OleDb.OleDbDataAdapter("SELECT * FROM [" + Microsoft.VisualBasic.Mid(filePath,"") + 1) + "]",connection)
        'Dim table As New DataTable()
        adapter.Fill(DTReadCSV)

        'now thats its nicely in a datatable 
        IntAmountRows = DTReadCSV.Rows.Count
        IntAmountColumns = DTReadCSV.Columns.Count


        'System.Diagnostics.Debug.Print(DTReadCSV.Rows.Item(1)(1).ToString)
        Return DTReadCSV

        Exit Function
    Catch ex As Exception
        MsgBox(ex.ToString())

        MsgBox(Err.Number & " " & Chr(13) & Err.Description)
    End Try
End Function

除了修改CSV文件之外,还有人可以更聪明地弄清楚如何解决这个问题,将“ – ”作为空白取出,目前这似乎是导入这些CSV文件的唯一漫长的方式.

非常感谢

使用Schema.INI,您可以向OleDB描述CSV的详细信息,包括生成的列名称和数据类型.例如,鉴于此数据:

“Country”,”Capital City”,”Population”,“Fake”
“France”,”Paris”,”2.25″,”—–“
“Canada”,”Toronto”,”2.5″,”—–“
“Italy”,”Rome”,”2.8″,”—–”

在同一文件夹中创建Schema.ini文件;它可以有多个部分来定义该文件夹中的各种CSV.如果在与CSV相同的文件夹中存在Schema.INI并且它具有CSV条目,则OleDB将自动使用它(没有什么特别的事情可做).

上述数据的Schema.INI条目可能如下所示:

[Capitals.CSV]
ColNameHeader=True
CharacterSet=1252
Format=CSVDelimited
TextDelimiter=”
Col1=”Country” Text Width 254
Col2=”Capital City” Text Width 254
Col3=”Population” Single
Col4=”Fake” Text Width 254

OleDb将在读取该文件时使用这些定义,从而在输出中为“假”列生成一串破折号:

使用Schema.INI的另一个好处(众多)是你可以在那里命名列,而不是使用或别名F1,F2,F3等.该输出的SQL只是“SELECT * FROM Capitals.CSV”

提示(对于其他人来说):要将UTF8指定为字符集,请在架构中使用CharacterSet = 65001.

有关更多信息,请参阅
– Schema.ini Text File Driver
– Code Page Identifiers

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读