2015-09-16 33 views
-2

我想从Excel工作表中插入数据到SQL Server表中,并且在此过程中我想通过检查来避免重复(基于多个列值)记录是否已经存在或不存在。我想为此使用C#。如果记录已经存在,通过避免重复将Excel工作表数据插入到SQL Server表中

请建议此任务的最佳做法或示例代码。

在此先感谢。

+2

你到目前为止尝试过什么? –

+0

重复含义每列具有相同的值?还是有一个候选键,你会强制执行唯一性? –

+0

在执行插入操作之前,您正在面对的是用于检查db中是否存在记录的难题? –

回答

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事务。

+0

可以请你提供示例代码。所以它可能会更清晰 –

+0

我无法发布代码,向您展示如何阅读电子表格或更新数据库表格,而无需查看电子表格格式或数据库模式。即使我做了,我也不会为你编写所有的代码。 –

相关问题