2014-09-19 46 views
-1

我想知道是否有人可以幫助我解決sas問題。SAS - 通過源表循環並插入到目標表中

我必須在現有源表中超過10000行並將源表值插入到多個目標表中。我必須從源表中一次插入一行,並確保從父表插入主鍵(在插入過程中)到子表中(在插入期間)

我正在使用SAS API( SAS EG)

這裏是什麼源表樣子(請注意,這是另一個表中沒有數據PROC),該表的名稱是具有例如以下的列countrycodelist:

 
Txn_id statuscode Typecode classcode identifier 

001   2   cnt  p1   13485 
002   2   na  n1   13444 
003   4   cnt  n1   12888 

現在,我對目標表有以下代碼: 注意:目標表已經創建,我必須插入它們(tableA/tableB)

PROC SQL; 
Insert into tableA (TXNID, STATUSCODE,CREATET,LASTUPDATET) 
Select TXN_ID,STATUSCODE, datetime(), datetime() 
From CountryCodeList 
; 

退出;

上述代碼運行後,狀態碼被插入到表sim.tableA中,但該表中有一個自動增量的鍵(pk)。我需要使用這個鍵來插入到子表中,以便從父表到下面的子表進行正確的連接。

PROC SQL; 
Insert into tableB (tableAID,TypeCode,ClassCode,DisplayID,) 
Select 1101,TypeCode,ClassCode,Identifier 
From CountryCodelist; 
QUIT; 

我手動插入從表A(1101),這適用於小型表插入最後的PK#,但在大規模插入我需要抓住從TableA的最後PK並插入到tableB的。 SQL具有諸如scope_identity()或使用@@ IDENTITY之類的函數來獲得最後插入的密鑰,但這些在SAS中不起作用,或者我可能以錯誤的方式解決它。

此外,我需要從源表(CountryCodelist)一次處理這些插入一行。這個countrycodelist表可以隨時間更新,並可能增長超過10k記錄

+0

你沒有提供足夠的細節來回答這個問題,我真的沒有想到。你如何識別目標表 - 它們是依賴於數據,還是每次插入到所有目標表或其他東西?你爲什麼說你需要逐個插入?這是什麼樣的桌子? – Joe 2014-09-19 19:50:48

+0

這是否僅僅是http:// stackoverflow的副本。com/questions/25894396/passing-a-identity-key-from-one-table-insert-to-another-table-insert-in-sas? – Joe 2014-09-19 19:51:11

+0

你是對的喬,我已經合併了兩個並刪除了舊的。對於混淆/疏忽 – vbala2014 2014-09-19 21:09:02

回答

0

好的,我會拍攝。下面的過程會爲你想要的做什麼工作?如果是這樣,我們就可以把它變成代碼:

  1. 從CountryCodeList確定的最大關鍵TableA中
  2. 插入一條記錄到表A.
  3. 一個talbeAID值分配給maxKey + 1的這個紀錄。
  4. 請插入記錄(與maxKey + 1 tableAID現在它)到表B
  5. 轉到1

還是不明白了很多。例如,爲什麼一次記錄一個記錄?如果表A和表B將始終具有相同的記錄數量,則應該更容易。但是,像這樣的過程對於你想要的東西有意義嗎?

+0

yup你懂了,我是編程世界的新手,所以如果你認爲所有10k記錄的同步轉儲可以通過從tableA中提取正確的id並將它與tableb關聯起來而沒有任何混淆,那將是非常棒的。表A和表B將始終具有相同的記錄數,因爲它們從一個源表中獲取主要信息,並將源信息分解成兩個目標表 – vbala2014 2014-09-21 17:49:02

+0

嘿,我給了您的文章一個綠色檢查,因爲這是我希望學習如何去做。 – vbala2014 2014-09-21 23:43:35