oracle数据导入到informix,从Informix批量导入Oracle

有趣的场景!

有几个问题需要担心:

Oracle批量导入的格式是什么格式?

DATE和DATETIME值的正确格式是什么?

务实(并且基于对Informix而不是Oracle的经验),而不是在批量加载之前截断表,我会将数据批量加载到新创建的表中(一个相对耗时的过程),然后安排替换旧的新表。根据最快的工作原理,我要么做一系列的操作:

将旧表重命名为垃圾表

将新表重命名为旧表

然后是一系列'drop junk table'操作,或者我会这样做:

放弃旧桌子

将新表重命名为旧表

如果以这种方式完成操作,那么与'truncate table'后跟'load table'相比,表的'停机时间'最小化。

Oracle就像SE一样 - 它的DDL语句是非事务性的(与IDS不同,在这种情况下,您可以拥有一个删除表的事务,创建一个新事务,然后回滚整个操作集)。

如何导出数据?

这取决于Oracle加载器的灵活性。如果它们可以适应Informix的标准输出格式(例如,UNLOAD格式),则卸载操作非常简单。您可能需要设置DBDATE环境变量以确保Oracle可以识别日期值。我可以相信'DBDATE="Y4MD-"'可能会被接受;这是2009年12月2 nd的SQL标准2009-12-02表示法。

默认的UNLOAD格式可以概括为“管道分隔的字段,反斜杠转义嵌入的换行符,反斜杠和管道符号”:

abc|123|2009-12-02|a\|b\\c\

d||

这是一条带有字符串,数字,日期和另一个字符串的记录(包含'a','|','b','\','c',换行符和'd')和一个空字段。从字符串中删除尾随空格;一个空但非空的字符字段在卸载文件中只有一个空格。

如果Oracle无法轻易处理,那么考虑Perl + DBI + DBD :: Informix + DBD :: Oracle是否可能是一个使用的工具集 - 这允许您连接到Oracle和Informix(SE) )数据库并在它们之间传输数据。

或者,您需要调查SE的替代卸载程序。除非您使用Windows,否则可能值得调查的一个程序是SQLCMD(公平警告:作者的偏见在中蔓延)。它有一组相当强大的输出格式选项,可能会创建一个Oracle可以接受的文本格式(例如CSV)。

最后一个回退是让工具为所选数据生成INSERT语句。我认为这可以作为SQLCMD的补充,但它还没有。所以,你必须使用:

SELECT 'INSERT INTO Target(Col1, Col2) VALUES (' ||

Col1 || ', ''' || Col2 || ''');'

FROM Source

这会生成一个简单的INSERT语句。如果Col2(一个字符串)本身包含引号(并且换行也可能在接收端引起问题),那么它的缺点是它不健壮。你必须评估这是否可以接受。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值