我正在創建一個簡單的.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派生的。 –