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 

Excelファイルのデータで満たされたStagingTableというステージングテーブルがあります。StagingTableのデータの各行には、さまざまなテーブル (TableA、TableB、および TableC) に挿入する必要があるレコードが含まれています。ここで、 TableA に移動する各行から列を挿入するときに、作成/生成された 主キー KeyAを取得する必要があります 次に、 KeyAとともにTableBに移動するStagingTable行から列を挿入することを選択し、KeyBとなどなど。

この要件を最もよく処理するにはどうすればよいですか?

4

1 に答える 1

0

このソリューションでは、TableA と TableB を変更して列を追加できることを前提としています。

データを StagingTable にロードします。ステージング テーブルには StageRecordID (ID) が必要です。次に、列 StageRecordID を追加するように TableA を変更する必要があります。TABLEA に入力するときに、この列に StageRecordId を格納します。TableB に入力するとき StagingTable を TableA と結合して、TableA の RowID を取得します 同様に、StageRecordID を TableB にも格納して、それに結合できるようにします

編集:いくつかのサンプルコード

--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 に答える