有没有办法将FK从一个到另一个批量插入到两个表中?

App*_*Fzx 7 sql-server bulkinsert foreign-keys cursor scope-identity

我将给出一个当前方法的伪代码示例,如果有人知道某个方法一次不能运行一行,我会非常感激.我正在使用MS SQL Server 2008.

define cursor for the data to be inserted (about 3 million records)
loop
(
    insert record into table 1
    use scope_identity() to get key
    insert record into table 2 that references table 1
)
Run Code Online (Sandbox Code Playgroud)

我宁愿同时对两个表进行某种插入,因为游标和循环很慢.

在有人讨论为什么我在两个具有1对1关系的单独表中插入内容之前,这是因为第一个表无法修改,我需要第二个(临时)表中的信息以供稍后的数据转换操作参考.

不,我无法添加临时列来将参考数据保存到无法修改的表中,因为它无法修改.这是一个实时系统,我没有权限更改表.

谢谢!

附加信息:

防爆

Source:

1 a big  monkey
2 a tall elephant
3 a big  giraffe
4 a tiny cow
5 a tall cow

Dest:

Table 1       Table 2
monkey        1 big
elephant      2 tall
giraffe       3 big
cow           4 tiny
cow           5 tall
Run Code Online (Sandbox Code Playgroud)

cjk*_*cjk 0

对于如此多的数据,最好的选择可能是隔离系统上的更新,identity insert在插入之前允许并预先填充密钥。


或者,您可以只执行第一次插入,然后修改第二次插入(来自临时表)以连接到原始数据并找到键。

  • 您不需要“修改”表来允许标识插入——您只需将插入语句用 SET IDENTITY_INSERT ON <tablename> 和 SET IDENTITY_INSERT OFF 括起来。 (2认同)