postgresql数据库迁移到oracle

前端之家收集整理的这篇文章主要介绍了postgresql数据库迁移到oracle前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
@H_301_1@



  • 迁移Postgresql到Oracle涉及到两方面工作:表结构的迁移和表数据的迁移。
  • @H_301_1@
  • 表结构的迁移
  • 表结构的迁移相对简单可以借助ESF Database Migration Toolkit,但不能通过其迁移数据(它会将所有varchar字段的开头替换为T)。通过ESF Database Migration Toolkit迁移完成后,通过PL/sql developer的export user objects得到创建表结构的语句。

    @H_301_1@
  • 表数据的迁移
  • 数据迁移有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

    猜你在找的Postgre SQL相关文章