我们在.NET应用程序中有2个DataTable,它们具有数百万行的客户/父关系。 应通过SQL BulkCopy将此数据插入SQL Server数据库。这个.NET应用程序的多个实例可能并行运行,将不同的数据插入到同一个表中。
自动生成主键我们在父表中有一个标识列。
问题是我们不知道如何将相应的外键插入子表。
有人知道如何使用bulkcopy解决这个1:N关系问题吗?我们无法在.NET中创建ID,因为可能会运行多个实例。
由于 丹尼尔
答案 0 :(得分:0)
这只是为什么我更喜欢使用IDENTITY上的自然键来表示我的所有主键的众多原因之一。
您如何知道哪些孩子会转到数据源中的哪个家长?如果它们通过列链接,那么它应该不会太难。插入父行,将子行插入到临时表中,然后在连接到该列上的父项时插入子行以获取ID。
如果关系仅仅是文件中的相对位置或类似的关系,则变得更加困难。您可以包含文件行#,然后使用上面相同的步骤,加入那些(child.line_num> parent.line_num,并且这两个数字之间没有其他parent.line_num)或者您可以一次导入一个父项在循环中,捕获ID,然后使用该ID插入其所有子项。你可以在SSIS中设置它而不会有太多麻烦,但它可能很慢。
有关您的问题的更多详细信息(数据源等),我可以提供更多细节。
答案 1 :(得分:0)
不确定您的数据在哪里,但这就是我接近这一点的方式。
identity insert
(表示跳过自动增量)