(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字节