【问题标题】:SQL Batch Import/Insert into multiple tablesSQL批量导入/插入多个表
【发布时间】:2012-08-30 17:14:45
【问题描述】:

我有一种情况,我需要将平面文件中的记录导入到多个表中,确保在每次插入的结果主键上保持标签,以便插入到下一个表中。

例子

For each Row in FlatFile_Import 

    RowID = INSERT Row_ELEMENTS1 INTO TABLEA

    PROPID = INSERT ROW_ELEMENTS2 & ROWID INTO TABLEB

    ATTRID = INSERT ROW_ELEMENTS3 & PROPID INTO TABLEC

    . . .  ..
NEXt 

我有一个临时表,StagingTable 填充了来自 excel 文件的数据。 StagingTable中的每一行数据都包含需要插入到各个表(TableA、TableB和TableC)中的记录。现在,当我从每一行插入到 TableA 的列时,我需要检索创建/生成的主键 KeyA 接下来我选择从 插入列应该进入 TableB 的 StagingTable 行,连同 KeyA,并返回 KeyB 等等。 p>

请问我怎样才能最好地处理这个要求?

【问题讨论】:

  • 你的问题是什么,究竟是什么? What have you tried? 导入平面文件时你卡在哪里了?您使用的是什么 DBMS?我们愿意帮助您解决问题,但我们不会为您编写代码...

标签: sql batch-file


【解决方案1】:

此解决方案假设您可以修改 TableA 和 TableB 以添加列。

将数据加载到 StagingTable 中。Staging 表应该有 StageRecordID (identity)。 然后你需要修改 TableA 以添加一个列 StageRecordID。填充 TABLEA 时将 StageRecordId 存储在此列中。 何时填充 TableB 将 StagingTable 与 TableA 连接以获取 TableA 的 RowID 同样将 StageRecordID 也存储在 TableB 中,以便在填充 TABLEC 时加入它

编辑:一些示例代码

--Assuming TableA is 

/*
CREATE TABLE TABLEA
{
RowID INT IDENTITY(1,1)
,Row_ELEMENTS1 varchar(25)
,StageRecordID int  ---you need to add this column to the Table
}
*/
INSERT INTO TABLEA
(
Row_ELEMENTS1,
StageRecordID
)
   SELECT Col1 AS Row_ELEMENTS1,StageRecordID FROM StaginTable


--NOW assuming TABLEB is 

/*
CREATE TABLE TABLEA
{
PROPID  INT IDENTITY(1,1)
,Row_ELEMENTS2 varchar(25)
,ROWID 
,StageRecordID int ---you need to add this column to the Table
}
*/
INSERT INTO TABLEB
(
Row_ELEMENTS2,
ROWID,
StageRecordID
   )
    SELECT a.Col2 AS Row_ELEMENTS2, b.ROWID ,a.StageRecordID FROM StaginTable AS a
    INNER JOIN TABLEA AS b
    ON a.StageRecordID=b.StageRecordID 

【讨论】:

  • 我在临时表中有数据,但我不确定在这种情况下如何处理批处理。我目前有大约 30,000 条记录要导入到我的表中。一个 INSERT INTO 。 . .从 中选择。 . . STATEMENT 可能会插入到 TABLEA 中,但我认为它不能确保我能够按顺序返回 Primarykeys 以便插入到下一个表中。请您在那里阐述您的建议好吗?
  • @Kobojunkie 也许您可以扩展您的问题?
  • 我想我现在明白你的意思了。我需要更新我的表格以包含暂存 ID,rowID 是必需的。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-10-29
  • 1970-01-01
  • 2018-08-02
  • 2010-09-24
  • 2016-01-31
  • 2013-02-05
相关资源
最近更新 更多