【发布时间】:2015-02-27 12:26:28
【问题描述】:
我正在将数据从 Excel 导入 SQL Server 2008 数据库,并且我成功地做到了。在从 Excel 插入特定行之前,有什么方法可以检查当前行是否存在于数据库中?
这是我用来从 excel 导入数据的代码
<pre lang="c#">
con.Open();
if (FileUpload1.HasFile)
{
string path = FileUpload1.PostedFile.FileName;
string saveFolder = @"E:\"+""+path+""; //Pick a folder on your machine to store the uploaded files
FileUpload1.SaveAs(saveFolder);
String excelConnString = String.Format("Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" + saveFolder + ";Extended Properties=Excel 12.0;");
OleDbConnection excelConnection = new OleDbConnection(excelConnString);
OleDbCommand cmd = new OleDbCommand("Select * from [Sheet1$]", excelConnection);
excelConnection.Open();
OleDbDataReader dReader;
dReader = cmd.ExecuteReader();
SqlBulkCopy sqlBulk = new SqlBulkCopy(con);
sqlBulk.DestinationTableName = "Course_Data";
sqlBulk.WriteToServer(dReader);
excelConnection.Close();
con.Close();
Response.Write("<Script> alert('File Uploaded Successfully');</Script>");
}
else
{
Response.Write("<Script> alert('First select the file which you need to upload.');</Script>");
}
con.Close();
</pre>
谢谢。
【问题讨论】:
-
批量插入是将文件数据导入数据库的最快方法,但是您可以将批量插入到 临时 表中,然后调用处理数据的存储过程该表(检查重复等)并将其移动到最终目的地。
标签: c# sql-server-2008 import-from-excel