CSV ファイルを SQL Server データベースに一括挿入しようとしています。
プロセスは、SQL Serverへの.CSV
ファイルです。DataTable
SqlBulkCopy
これを実行すると、次のエラーが発生します。
指定された ColumnMapping は、ソースまたは宛先のどの列とも一致しません
Management Studio を介して CSV を SQL Server に直接インポートすると、機能します。問題はデータテーブルの変換だと思いますか?
.CSV
からに移動するコードは次のDataTable
とおりです。
public DataTable CsvFileToDataTable(string filePath)
{
var csvData = new DataTable("Table1");
using (var csvReader = new TextFieldParser(filePath))
{
csvReader.SetDelimiters(new string[] { "," });
csvReader.HasFieldsEnclosedInQuotes = true;
var readFields = csvReader.ReadFields();
foreach (var dataColumn in readFields.Select(column => new DataColumn(column) {AllowDBNull = true }))
{
csvData.Columns.Add(dataColumn);
}
while (!csvReader.EndOfData)
{
var data = csvReader.ReadFields();
for (var i = 0; i < data.Length; i++)
{
if (data[i] == "")
{
data[i] = null;
}
}
csvData.Rows.Add(data);
}
}
return csvData;
}
一括コピー挿入のコードは次のとおりです。
public void InsertData(DataTable table)
{
using (var transactionScope = new TransactionScope())
{
using (var sqlConnection = new SqlConnection(this.ConnectionString))
{
sqlConnection.Open();
using (var sqlBulkCopy = new SqlBulkCopy(sqlConnection))
{
sqlBulkCopy.DestinationTableName = table.TableName;
foreach (var column in table.Columns)
{
sqlBulkCopy.ColumnMappings.Add(column.ToString(), column.ToString());
}
sqlBulkCopy.WriteToServer(table);
}
transactionScope.Complete();
}
}
}
誰か提案はありますか?
ありがとう