【发布时间】:2021-08-06 15:03:02
【问题描述】:
本质上,我想导入一个 csv 文件,其中包含应存储在数据表中的数据,然后将其存储到 SQL 中。我还想在导入数据表之前检查所有必需的列是否已输入到 csv 文件中
我该怎么做呢?
谢谢
【问题讨论】:
-
请注意 StackOverflow 不是编码服务。
本质上,我想导入一个 csv 文件,其中包含应存储在数据表中的数据,然后将其存储到 SQL 中。我还想在导入数据表之前检查所有必需的列是否已输入到 csv 文件中
我该怎么做呢?
谢谢
【问题讨论】:
将所有行读入变量,如果你有一个标题作为 CSV 的第一行,解析它并创建数据表列,接下来你可以简单地将新行添加到数据表中。 如果需要,请指定分隔线。
Dim FileToExtract as FileInfo = nothing; 'load a file info
Dim CSVDivider As String = ";"
Dim EncodingType As Encoding = Nothing
Dim lines = File.ReadAllLines(FileToExtract.FullName, If(EncodingType Is Nothing, Encoding.GetEncoding("utf-8"), EncodingType))
Dim cols As String() = (New Regex(CSVDivider)).Split(lines.First)
For i As integer = 0 To cols.Length - 1
dt.Columns.Add(New DataColumn(If(CSVTrim <> "", cols(i).Trim(CSVTrim), cols(i)), If(dtColumnsType IsNot Nothing, dtColumnsType.Item(cols(i).Trim(CSVTrim)), GetType(String))))
Next
For Each line In lines.Skip(1)
Dim objFields = From field In (New Regex(CSVDivider)).Split(line)
Select If(CSVTrim <> "", field.Trim(CSVTrim), field)
Dim newRow = dt.Rows.Add()
newRow.ItemArray = objFields.ToArray()
Next
【讨论】: