导入添加了新行的Excel工作表

时间:2014-08-25 01:51:01

标签: c# asp.net excel sql-server-2008-r2

我正在通过C#程序将Excel工作表导入到数据库中,我第一次导入没有问题,但是随后,当我想导入相同的Excel工作表时,但是新行,我无法我收到以下错误:

Violation of PRIMARY KEY constraint 'PK_Students'. Cannot insert duplicate key in object 'dbo.Students'.
The statement has been terminated. 

我的SQL语句如下:

INSERT INTO Students (Student_Id, Student_name, Subject_Class, Subject_Id, Student_Course)
SELECT Student_Id, Student_name,Subject_Class, Subject_Id, Student_Course 
FROM Students WHERE NOT EXISTS (SELECT 1 FROM Students.*)

2 个答案:

答案 0 :(得分:0)

当您从Student表中插入Student表时,您的insert语句没有意义。错误是尝试通过(主键Student_Id)将重复行插入Student表。

您使用的是哪个excel库?如果您还没有:https://code.google.com/p/linqtoexcel/

,请给予linq优势

如果您不想花时间学习linq excel,您可以随时删除学生表中存在于电子表格中的所有记录(通过Student_Id),然后再次从电子表格中插入所有记录。

答案 1 :(得分:0)

问题解决了。我使用了以下声明:

Merge into bkTeachers as tab1 using(select * from Teachers) as tab2 on tab1.Teacher_Id=tab2.Teacher_Id when matched then update set tab1.Teacher_Name=tab2.Teacher_Name,tab1.Password=tab2.Password when not matched then insert values(tab2.Teacher_Id,tab2.Teacher_Name,tab2.Password);