我有一个情况,我需要将平面文件中的记录导入到几个表中,确保在每个行插入的结果主键上保留选项卡,以便插入到下一个表中。
示例
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 ,等等。
我怎样才能最好地处理这个要求?
答案 0 :(得分:0)
此解决方案假设您可以修改TableA和TableB以添加列。
将数据加载到StagingTable .Staging表应具有StageRecordID(标识)。 然后,您需要修改TableA以添加colum StageRecordID。填充TABLEA时,将StageRecordId存储在此列中。 填充TableB时,使用TableA连接StagingTable以获取TableA的RowID 类似地在TableB中存储StageRecordID以便在填充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