【发布时间】:2017-08-01 19:20:01
【问题描述】:
我正在创建一个简单的 .NET Core 应用程序,它读取 CSV 文件并将行批量插入 SQL Server。我有 56 列,所以,我不想创建实体类。我看到了很多示例,他们使用 SqlBulkCopy 但由于包问题,它们都不适合我。
任何人都可以帮助我将 CSV 导入 SQL,而无需对代码中的列名进行硬编码吗?我的 CSV 与 db 表结构完全同步。
CSVHelper.CsvReader rdr = new CSVHelper.CsvReader(new StreamReader(new FileStream(@"/Users/selva/Downloads/test.csv", FileMode.Open)));
System.Data.SqlClient.SqlBulkCopy bcp = new SqlBulkCopy(builder.ConnectionString, SqlBulkCopyOptions.UseInternalTransaction);
bcp.BatchSize = 500;
bcp.DestinationTableName = "test_table";
bcp.NotifyAfter = 500;
bcp.SqlRowsCopied += (sender, e) =>
{
Console.WriteLine("Written: " + e.RowsCopied.ToString());
};
bcp.WriteToServer(rdr);
提前致谢。
【问题讨论】:
-
“包问题”是什么意思?
-
我不认为CvsReader类可以和SqlBulkCopy.WriteToServer一起使用。 SqlBulkCopy 需要具有 DataRow 或 DbDataReader。 CvsReader 不是从 DbDataReader 派生的。
标签: c# sql asp.net-core