我想從Excel工作表中插入數據到SQL Server表中,並且在此過程中我想通過檢查來避免重複(基於多個列值)記錄是否已經存在或不存在。我想爲此使用C#。如果記錄已經存在,通過避免重複將Excel工作表數據插入到SQL Server表中
請建議此任務的最佳做法或示例代碼。
在此先感謝。
我想從Excel工作表中插入數據到SQL Server表中,並且在此過程中我想通過檢查來避免重複(基於多個列值)記錄是否已經存在或不存在。我想爲此使用C#。如果記錄已經存在,通過避免重複將Excel工作表數據插入到SQL Server表中
請建議此任務的最佳做法或示例代碼。
在此先感謝。
你有兩個選擇:
1)首先插入所有的記錄(包括複製)到一個臨時表具有相同的列目標表。如果您願意,您仍然可以使用SqlBulkCopy
作爲第一步。然後,編寫一個存儲過程,將臨時表中的記錄傳輸到目標表中,首先檢查重複項。如果其他方同時訪問數據庫,則需要使用SERIALIZABLE
事務進行檢查和插入(請參閱here)。調用從C#存儲過程是這樣的:
using System.Data.SqlClient;
using (SqlConnection conn = new SqlConnection("connectionString"))
{
SqlCommand cmd = conn.CreateCommand();
cmd.CommandType = System.Data.CommandType.StoredProcedure;
cmd.CommandText = "StoredProcedureName";
cmd.ExecuteNonQuery();
}
2)使用Microsoft.Office.Interop.Excel
讀取數據,然後插入使用可用的類中的記錄進行System.Data.SqlClient
,首先查詢目標表來檢查重複。同樣,如果您的應用程序使用多個線程與數據庫交互或其他方有併發訪問權限,則可能需要使用SERIALIZABLE
事務。
可以請你提供示例代碼。所以它可能會更清晰 –
我無法發佈代碼,向您展示如何閱讀電子表格或更新數據庫表格,而無需查看電子表格格式或數據庫模式。即使我做了,我也不會爲你編寫所有的代碼。 –
你到目前爲止嘗試過什麼? –
重複含義每列具有相同的值?還是有一個候選鍵,你會強制執行唯一性? –
在執行插入操作之前,您正在面對的是用於檢查db中是否存在記錄的難題? –