我想将Excel工作表中的数据插入到SQL Server表中,并且在此过程中我希望通过检查(基于多个列值)是否已存在记录来避免重复。我想为此使用C#。
请为此任务建议最佳做法或示例代码。
提前致谢。
答案 0 :(得分:1)
您有两种选择:
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
事务。