导入添加了新行的Excel工作表
本文关键字:Excel 工作 新行 添加 导入 | 更新日期: 2023-09-27 18:19:21
我正在通过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.*)
您的insert语句没有意义,因为您正在从Student表插入Student表。这个错误是由于试图通过(主键Student_Id)插入重复的行到Student表。
你用的是什么excel库?如果你还没有尝试过,试试linq: https://code.google.com/p/linqtoexcel/
如果你不想花时间学习linq到excel,你可以删除电子表格中存在的Student表中的所有记录(通过Student_Id),然后再次从电子表格中插入它们。
问题解决。我使用了下面的语句:
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);