Excel ファイル (.xlsx) があり、ファイルの内容を SQL サーバー テーブルにアップロードしようとしています。SQL 一括コピーを使用してデータを一括挿入しています。データはテーブルに挿入されますが、データが正しく挿入されていません。
これがサンプルのExcelデータです-
これは、Sql 一括コピーのコードです。
string fname = Path.GetFileName(fup_addRoute.FileName);
fup_addRoute.SaveAs(Server.MapPath("/Admin/UserRoutes/" + fname));
string path = Server.MapPath("/Admin/UserRoutes/" + fname);
using (OleDbConnection connection = new OleDbConnection(string.Format("Provider=Microsoft.ACE.OLEDB.12.0;Data Source={0};Extended Properties=Excel 8.0", path)))
{
OleDbCommand command = new OleDbCommand("select * from [Sheet1$]", connection);
connection.Open();
System.Data.Common.DbDataReader dr = command.ExecuteReader();
SqlBulkCopy bulkInsert = new SqlBulkCopy(con);
bulkInsert.DestinationTableName = "routesdata";
bulkInsert.WriteToServer(dr);
connection.Close();
dr.Close();
bulkInsert.Close();
}
挿入後のデータ:
最後の行のみが挿入され、Excel シートの最初の列の値が欠落しています。表の xid 列は自動インクリメント列です。
この手順はMySqlでは「load data infile」で簡単でしたが、SQLサーバーに移行しただけです。私のコードで何が間違っていますか。提案してください。