【发布时间】:2020-09-22 19:46:33
【问题描述】:
我正在尝试将数据从逗号分隔的 csv 文件导入 SQL。 csv 文件有引号中的字段,因为某些字段包含逗号作为数据的一部分。如果我在逗号上拆分,它将包含逗号的字段拆分为我不想要的 2 个字段。如何正确拆分?
CSV 文件示例:
"LASTNAME","FIRSTNAME","MIDNAME","BUSNAME","GENERAL","SPECIALTY"
"BERRY","JOY","YVONNE ",,"MEDICAL PRACTICE, MD","FAMILY PRACTICE",
"BERRY","JOE"," ",,"IND- LIC HC SERV PRO","NURSE/NURSES AIDE"
代码:
try
{
StreamReader sr = new StreamReader(strFilePath);
string line = sr.ReadLine();
string[] value = line.Split(',');
System.Data.DataTable dt = new System.Data.DataTable();
DataRow row;
foreach (string dc in value)
{
dt.Columns.Add(new DataColumn(dc));
}
while (!sr.EndOfStream)
{
value = (sr.ReadLine()).Split(',');
if (value.Length == dt.Columns.Count)
{
row = dt.NewRow();
row.ItemArray = value;
dt.Rows.Add(row);
}
}
SqlBulkCopy bc = new SqlBulkCopy(connsql.ConnectionString, SqlBulkCopyOptions.TableLock);
bc.DestinationTableName = tablename;
bc.BatchSize = dt.Rows.Count;
bc.WriteToServer(dt);
bc.Close();
}
catch (Exception ex)
{
//MessageBox.Show("Error importing Staff Summary: " + ex.Message);
connsql.Close();
}
【问题讨论】:
-
您使用的是哪个 dbms?
-
你成为了一个经典错误的牺牲品,其中最著名的是“永远不要卷入亚洲的陆战”,但鲜为人知的是:“永远不要使用 String。涉及 csv 数据时的 Split()。”