将mysql表数据拼接成oracle的insert语句

(1)将表名传入下面的select,将生成的sql复制出来执行就可以得到insert语句

select  CONCAT('select CONCAT(\'INSERT INTO ',TABLE_NAME,'('),
group_concat(COLUMN_NAME),') VALUES(\',',
group_concat(
  CASE data_type WHEN 'varchar' THEN CONCAT('\'\\\'\',','IFNULL(',COLUMN_NAME,',\'\')',',\'\\\'\'') 
  WHEN 'char' THEN CONCAT('\'\\\'\',','IFNULL(',COLUMN_NAME,',\'\')',',\'\\\'\'') 
  WHEN 'int' THEN CONCAT('\'\',','IFNULL(',COLUMN_NAME,',0)',',\'\'') 
  ELSE COLUMN_NAME END
  ,',\',\'')
,CONCAT(',\'\)\;','\') from ',TABLE_NAME ,';' )
from information_schema.columns
where table_name = 'TB_USER' 
ORDER BY ORDINAL_POSITION; 

(2)将执行结果继续在mysql中执行select表数据并在select中将数据拼接成oracle的insert语句

(3)将insert语句复制到Oracle中执行,如果是大批量的可以在命令窗口执行或使用 insert into select from dual;或关闭表日志后使用insert all into ; 

(4)特殊情况处理: 

     单引号要替换成两个单引号''

     &在oracle里是获取用户输入,要替换成'|| chr(38) ||'

     varchar2最大只支持4000字节

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值