Ora2Pg无法在conf文件中生成包含COPY的导出类型的sql脚本

时间:2015-09-08 11:22:56

标签: oracle postgresql data-migration ora2pg

我正在使用ora2pg将架构和数据从oracle迁移到postgres数据库。

conf文件有以下修改:

  1. 提供ORACLE_HOME和DSN
  2. 将导出类型设置为:TYPE, TABLE, PACKAGE, COPY, VIEW, GRANT, SEQUENCE, TRIGGER, FUNCTION, PROCEDURE, TABLESPACE, TYPE, PARTITION, MVIEW, QUERY (删除了FDW)
  3. 当我运行该工具时,我收到以下错误:

      

    DBD :: Oracle :: db准备失败:ORA-01741:非法零长度   标识符(DBD E RROR:OCIStmtPrepare)[用于语句“SELECT FROM   “。”GT_LAYER_ENTITIES“a”]在D:/Dwimperl/perl/site/lib/Ora2Pg.pm   第8808行。致命:ORA-01741:非法零长度标识符(DBD   错误:OCIStmtPrepare)中止出口......

    我提供的用户拥有DBA权限。

    如果您有任何解决方案,请告诉我。

    由于

1 个答案:

答案 0 :(得分:0)

您确实安装了DBD-Oracle的正确版本。您可以使用DBD-Oracle-1.74进行证明。
我的建议是,你不要将配置文件用于提取表,查看等。
但首先要创建一个新项目:

ora2pg --project_base /home/user/ --init_project project_name

cd project_name/

ora2pg -c ora2pg.conf -t TABLE -o tables.sql -b schema/tables/

ora2pg -c ora2pg.conf -t SEQUENCE -o sequence.sql -b schema/sequences/

ora2pg -c ora2pg.conf -t TRIGGER -o trigger.sql -b schema/triggers/

ora2pg -c ora2pg.conf -t PROCEDURE -o procedure.sql -b schema/procedures

ora2pg -c ora2pg.conf -t VIEW -o view.sql -b schema/views/

ora2pg -c ora2pg.conf -t GRANT -o grant.sql -b schema/grants/

并在导入db postgres表,序列等后... 最后,导入db。

上的数据
ora2pg -c ora2pg.conf -t INSERT -o data.sql -b data/

您最重要的是为您的导入创建一个psql数据库和用户。