gpt4 book ai didi

sql - 如何使批量插入适用于多个表

转载 作者:行者123 更新时间:2023-12-02 10:31:36 24 4
gpt4 key购买 nike

当存在外键关系时,如何使用 SQL Server 批量插入插入到多个表中?

我的意思是表格是这样的,

CREATE TABLE [dbo].[UndergroundFacilityShape]
([FacilityID] [int] IDENTITY(1,1) NOT NULL,
[FacilityTypeID] [int] NOT NULL,
[FacilitySpatialData] [geometry] NOT NULL)

CREATE TABLE [dbo].[UndergroundFacilityDetail]
([FacilityDetailID] [int] IDENTITY(1,1) NOT NULL,
[FacilityID] [int] NOT NULL,
[Name] [nvarchar](50) NOT NULL,
[Value] [nvarchar](255) NOT NULL)

因此每个 UndergroundFacilityShape 可以有多个 UndergroundFacilityDetail。问题是 FacilityID 在插入完成之前才定义,因为它是一个标识列。如果我将数据批量插入到 Shape 表中,则无法将其与 C# 应用程序中的详细数据进行匹配。

我猜测解决方案是运行 SQL 语句来找出下一个标识值是什么,然后自己填充这些值并关闭批量插入的标识列?请记住,只有一个人将运行此应用程序来插入数据,并且很少执行此操作,因此我们不必担心身份值冲突或类似的情况。

我正在尝试导入数千条记录,使用标准插入大约需要 3 分钟,但批量插入只需几秒钟。

将来我希望导入比“数千”条记录大得多的数据。

最佳答案

事实证明这很简单。获取每个表上的当前标识值,然后将它们填充到 DataTable 中,并在使用时自行递增它们。我还必须确保使用正确的值(value)观来维持关系。就是这样。我是否关闭身份列似乎并不重要。

我已经在实时数据上使用这个工具有一段时间了,它工作得很好。

尽管导入时间不超过 3 秒(而不是 3 分钟),但这是非常值得的,而且我希望在某个时候收到更大的数据集。

那么如果不止一个人同时使用该工具怎么办?是的,我预计会出现问题,但我们永远不会出现这种情况。

关于sql - 如何使批量插入适用于多个表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7799431/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com