sto*_*age 3 sql-server-2008 ssis bulkcopy
我正在使用 SSIS 将数据从我的 SQL Server 2008 prod 数据库转储到平面文件,然后使用批量插入将这些平面文件加载到 SQL Server 2008 dev 数据库中。SSIS 包在批量插入之前运行 TRUNCATE TABLE 语句,但是当我运行它时,我仍然收到此错误:“语句已终止。违反 PRIMARY KEY 约束。无法插入重复键。” 为什么截断后会有重复的键?在批量插入之前,我还需要做些什么来清除主键?
如果您已经截断了表,那么主键违规必须来自文件中的重复数据。尝试在没有 PK 约束的情况下批量插入新表,然后检查表中是否有重复项(可能比编写一些工具或脚本来直接解析文件更容易)。您可以通过这种方式创建一个没有约束的模拟表:
SELECT * INTO dbo.new_bulk_source
FROM dbo.old_source
WHERE 1 = 0;
Run Code Online (Sandbox Code Playgroud)
然后更改您的包以引用此表,执行插入操作,然后运行:
SELECT key FROM dbo.new_bulk_source
GROUP BY key
HAVING COUNT(*) > 1;
Run Code Online (Sandbox Code Playgroud)
我敢打赌,电话是从房子内部发出的(或者截断没有成功)。
归档时间: |
|
查看次数: |
4927 次 |
最近记录: |