postgresql数据库迁移到oracle
表结构的迁移相对简单可以借助ESF Database Migration Toolkit,但不能通过其迁移数据(它会将所有varchar字段的开头替换为T)。通过ESF Database Migration Toolkit迁移完成后,通过PL/SQL developer的export user objects得到创建表结构的语句。
数据迁移有2种方式:postgreSQL导出insert语句然后执行语句导入或者postgreSQL导出文件然后用oracle的sqlldr方式导入。前者存在clob难以插入以及sql长度限制等问题,推荐后者方式进行数据迁移。 1.Copy命令导出数据文件 copy table1 to 'd:/table1.data' delimiter as '|'null as ''; 注意:postgreSQL存在boolean类型导出为t或者f(oracle用int类型1或者2来代替),使用cast函数 Copy(selectcast(column as int)from table1)to 'd:/table1.data' delimiter as '|'null as ''; 批量执行使用sql函数进行 create function exportLiferay(path text) returns void as $$ begin execute 'copy table1 to ''' || path || 'table1_.data'' delimiter as ''|''null as '''' '; return; end; $$ language plpgsql; 2.制作sqlldr控制文件 注意:字符集、clob以及时间,日期类型 load data CHARACTERSET UTF8 into table table1 fields terminated by "|" optionally enclosed by '"' trailing nullcols ( folderid, groupid, companyid, userid, createdate timestamp"yyyy-mm-dd hh24:mi:ss.ff", modifieddate timestamp"yyyy-mm-dd hh24:mi:ss.ff", parentfolderid, name, description char(10000) ) 3.执行导入 sqlldr import/import data=table1.data control=table1.ctl log=table1.log readsize=100000000 根据实际情况,调整readsize (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |