我正在尝试批量上传到SQL服务器数据库中。源文件有我想删除的副本,所以我希望操作会自动上传第一个,然后丢弃其余的。 (我设置了一个唯一的键约束)。问题是,当尝试重复上传时,整个事件失败并被回滚。有什么方法可以告诉SQL继续前进吗?SQL导入跳过重复项
2
A
回答
7
尝试大量数据插入到临时表,然后SELECT DISTINCT作为@madcolor建议或WHERE子句中
INSERT INTO yourTable
SELECT * FROM #tempTable tt
WHERE NOT EXISTS (SELECT 1 FROM youTable yt WHERE yt.id = tt.id)
或其它字段。
1
如果你是通过一些像SQL Plus或DBVis或Toad这样的SQL工具来做这件事的话,我怀疑不是。如果你用语言进行编程,那么你需要分而治之。假设一行一行地执行更新并捕获每个异常将是一个过程太冗长,所以相反,您可以首先在整个SQL块上执行批处理操作,如果失败,则在前半部分执行该操作,如果失败,在上半场的前半段进行。迭代这种方式,直到你有一个成功的块。放弃该块并在其余的SQL上执行相同的过程。任何违反约束的东西最终都会成为您知道要记录并丢弃的唯一SQL语句。这应该导入尽可能多的批量处理,同时仍然抛出无效行。
0
为此使用SSIS。你可以告诉它跳过重复。但首先确保它们是真实的重复。如果某些列中的数据不同,那么如何知道哪些记录更好?
相关问题
- 1. 将数据导入SQL服务器时跳过重复项
- 2. CSV导入跳过重复记录
- 3. 使用PHP将CSV导入到MySQL跳过重复项
- 4. reactivex重复跳过
- 5. 导入CSV数据时跳过重复值
- 6. SQL不插入重复项
- 7. SQL插入跳过入门
- 8. DataGridView,如何跳过重复
- 9. For loop跳过重复值
- 10. 复制文件跳过重复VB.NET
- 11. 导入数据并忽略SQL Server中的重复项
- 12. 通过phpmyadmin导入csv或sql并跳过PK?
- 13. 建立一个导入过程,检查重复项
- 14. 为什么datetime.datetime跳过重复和跳过时间值?
- 15. SQL服务器跳过重复的关系(父子)在递归
- 16. T-SQL复制 - 跳过特定命令
- 17. 跳过第一项,然后重复规则每x x
- 18. 在MySQL中跳过重复项的最佳实践
- 19. DataGrid选项卡导航跳过列
- 20. 导入Excel表格到SQL Server,跳过主键违规
- 21. MySQL - 跳过重复的WordPress条目
- 22. LINQ:跳过和采取重复
- 23. 学习MySQL,Python - 跳过重复
- 24. Python:如何跳过输入文件中的重复行?
- 25. 在mysql中的重复条目上跳过插入
- 26. 取正导致重复项
- 27. 将CSV导入到PowerPivot时跳过行
- 28. SQL - 找到重复项
- 29. SQL中的重复项
- 30. IntelliJ:从Eclipse导入Android项目导致重复的类错误
也许显示一些代码,可能只是选择不同。 – madcolor 2009-09-14 16:22:07
@madcolor:重复项在'insert'中,而不在'select'中。 – voyager 2009-09-14 16:28:56
@voyager - 他从具有重复项的源文件插入。我相信@MadColor建议重新创建源文件以通过使用select distinct语法消除重复项。 – klabranche 2009-09-14 16:30:57