我正在编写一个perl脚本,它将DB1中存在的几个表中的数据复制到DB2中的表中。 我在DB3中有一个表,其中包含DB2中每个表的插入查询。
下面是一个表的例如查询。
Insert into ACTION_BLOCK
(ACTION_BLOCK_ID, RULE_EXPR_ID, ACTION_BLOCK_ORDER)
Values();
我想到实现以下逻辑
但DB中的数据也可能包含日期。在这种情况下,我无法使用values()
直接替换查询中的values('data in hash')
关键字,因为我需要提及日期格式(如值后的dd\mm\yyyy
)。
任何人都可以帮助我克服这一挑战。
为了更清楚地考虑下面的例如:
DB1
和DB2
有一个名为ACTION_BLOCK
的表格。我需要将DB1_ACTION_BLOCK
表中的数据复制到DB2_ACTION_BLOCK
表。
根据我的逻辑,我从ACTION_BLOCK
选择DB3
表的插入查询,如下所示。
Insert into ACTION_BLOCK
(ACTION_BLOCK_ID, RULE_EXPR_ID,RULE_DATE,ACTION_BLOCK_ORDER)
Values();
在上面的查询中,我替换了" values()"我从DB1
获得的数据的关键字如下所示:
values(01,02,02/02/2016,09);
由于日期格式不正确,这会引发错误。理想情况下,它应如下所示:
values(01,02,to_date('02/02/2016','mm/dd/yyyy'),09);
但是,包含来自DB1
的数据的哈希将只包含没有to_date
关键字和格式的日期。
我希望这个例子清楚地描述了这个问题。
答案 0 :(得分:0)
在纯SQL中,您只需编写:
INSERT INTO DB2.dbo.ACTION_BLOCK
select * from DB1.dbo.ACTION_BLOCK
将它包装在Perl中,Bob就是你的叔叔!