2014-09-19 41 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