申し訳ありませんが、私のEnghistは良くありません!表の既存の列は、(既存のチェックではない)輸入のためにインポートの前にテーブルの既存のレコードをチェックしてasp.netのSQL ServerにExcelファイルをインポート
My機能の仕事だけでなく、この行をインポートdo'ntの場合、
string excelConnectionString = "";
string strFileName = DateTime.Now.ToString("ddMMyyyy_HHmmss");
string strFileType = System.IO.Path.GetExtension(fileuploadExcel.FileName).ToString().ToLower();
fileuploadExcel.SaveAs(Server.MapPath("~/Import/" + strFileName + strFileType));
string strNewPath = Server.MapPath("~/Import/" + strFileName + strFileType);
//Connection String to Excel Workbook
if (strFileType.Trim() == ".xls")
{
excelConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" + strNewPath + ";Extended Properties=Excel 8.0;Persist Security Info=False";
}
else if (strFileType.Trim() == ".xlsx")
{
excelConnectionString = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" + strNewPath + ";Extended Properties=Excel 12.0;Persist Security Info=False";
}
//Create Connection to Excel work book
OleDbConnection excelConnection =new OleDbConnection(excelConnectionString);
//Create OleDbCommand to fetch data from Excel
OleDbCommand cmd = new OleDbCommand("Select [account_id], [type],[first_name], [last_name], [title], [birthday], [tel],[phone], [email_1],[email_2], [remark],[del_if] from [Sheet1$]",excelConnection);
excelConnection.Open();
OleDbDataReader dReader;
dReader = cmd.ExecuteReader();
SqlBulkCopy sqlBulk = new SqlBulkCopy(strConnection);
//Give your Destination table name
sqlBulk.DestinationTableName = "contact";
sqlBulk.WriteToServer(dReader);
SqlBulkCopyを使用できない場合、別の方法を使用できます。私は、 "輸入前にチェックする"ことを解決したい。ステージングテーブルに書き込んだ後、まだ存在していないレコードを他のタルベにコピーすると、より複雑になる可能性があります。 – Hainlp
@ Hainlp-編集した投稿にいくつかの選択肢があります。彼らが何らかの使用を望むことを願っています。がんばろう。主な問題は、SqlBulkCopyは選択挿入には役に立ちません。できるだけ早くデータを取り込むだけです。問題の要点は、まずデータベースに入れるデータをフィルタリングするか、SqlBulkCopyを使用しないことです。 –
@ムース:ありがとう。私はストアのプロシージャとインポートする他の方法(SqlBulkCopyを使用しないでください)を見つけるために詳細を読む必要があると思います。ありがとうミースムースもう一度:)。 – Hainlp