postgresql数据库迁移到oracle




  • 迁移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 (select  cast(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

  • 1
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值