【发布时间】:2016-03-13 23:16:48
【问题描述】:
当我尝试使用 C# 将 csv 文件上传到 SQL Server 表时收到以下错误消息(csv 文件没有标题)。 错误消息:“名为 ' ' 的列已属于此 DataTable”
我试图在网络上的某个地方找到一些解决方案,但我真的很坚持。 我的代码:
SqlConnection con = new SqlConnection(@"server=.;Initial Catalog=myDtabase;Integrated Security=SSPI;");
string filepath = @"c:\\my_CSV_file.csv";
StreamReader sr = new StreamReader(filepath);
string line = sr.ReadLine();
string[] value = line.Split(',');
DataTable dt = new 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(con.ConnectionString, SqlBulkCopyOptions.TableLock);
bc.DestinationTableName = "my_SQLServer_Table";
bc.BatchSize = dt.Rows.Count;
con.Open();
bc.WriteToServer(dt);
bc.Close();
con.Close();
【问题讨论】:
-
用双引号括起来的字段是
" " -
您是否曾使用调试器单步执行您的代码以查看您是否多次添加同一列?
-
向我们展示您的 CSV 文件中的一些示例数据。可能是前几行。
-
@ayoub,看看我的一篇旧帖子。stackoverflow.com/questions/24088989/… 还有一种更简单的方法来进行批量插入,方法是将 DataTable 转换为 XML 并在数据库端进行插入
-
感谢您的快速回复!! MethodMan 我的字段未包含在“”中 MikeNakis 我将编辑我的帖子并显示一些记录。 MethodMan 我会看看你的帖子。谢谢你们 !我会告诉你它是否有效
标签: c# sql-server csv