我是SQL Server新手。我有一个Batch进程,可以将数据加载到我的stage表中。我在桌子上有一些外键。我想转储加载到错误表时遇到的所有外键错误。我该怎么做?
由于 新手
答案 0 :(得分:2)
使用SSIS加载数据。验证失败的记录可以发送到异常表。
答案 1 :(得分:1)
一种方法是将数据加载到没有FK约束的临时表中,删除不良记录(违反FK约束),然后将数据从临时表移动到阶段表中。如果你的桌子上有很多FK,这可能会有点乏味,所以你可能想要自动化这个过程。
这里有一些伪代码来表明我的意思......
-- First put the raw data into MyTempTable
-- Find the records that are "bad" -- you can SELECT INTO a "bad records" table
-- for later inspection if you want...
SELECT *
INTO #BadRecords
FROM MyTempTable
WHERE ForeignKeyIDColumn NOT IN
(
SELECT ID FROM ForeignKeyTable
)
-- Remove the bad records now
DELETE
FROM MyTempTable
WHERE ForeignKeyIDColumn NOT IN
(
SELECT ID FROM ForeignKeyTable
)
-- Now the data is "clean" (won't violate the FK) so you can insert it
-- from MyTempTable into the stage table