我正在创建一个简单的.NET Core应用程序,该应用程序读取CSV文件,并将这些行插入到SQL Server中。我有56列,所以,我不想创建一个实体类。我看到了很多示例,他们使用SqlBulkCopy,但由于包问题,他们都没有为我工作。将CSV转换为System.data.common.dbdatareader以将CSV大容量导入SQL
任何人都可以帮助我将CSV导入到SQL中,而无需在代码中对列名进行硬编码吗?我的CSV与数据库表结构完全同步。
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派生的。 –