0

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

例子

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接下来我选择从StagingTable行中插入应该进入TableB的列以及KeyA,然后取回KeyB和等等等等。

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

4

1 回答 1

0

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

将数据加载到 StagingTable 中。Staging 表应具有 StageRecordID(身份)。然后你需要修改 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 
于 2012-08-30T17:31:44.907 回答