Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/postgresql/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Oracle Ora2Pg无法生成导出类型为conf文件中包含COPY的sql脚本_Oracle_Postgresql_Data Migration_Ora2pg - Fatal编程技术网

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

Oracle Ora2Pg无法生成导出类型为conf文件中包含COPY的sql脚本,oracle,postgresql,data-migration,ora2pg,Oracle,Postgresql,Data Migration,Ora2pg,我正在使用ora2pg将模式和数据从oracle迁移到postgres数据库 conf文件有以下修改: 提供ORACLE_主页和DSN 将导出类型设置为:type、TABLE、PACKAGE、COPY、VIEW、GRANT、SEQUENCE、TRIGGER、FUNCTION、PROCEDURE、TABLESPACE、type、PARTITION、MVIEW、QUERY (已删除FDW) 运行该工具时,出现以下错误: DBD::Oracle::db准备失败:ORA-01741:零长度非法 标识符(

我正在使用ora2pg将模式和数据从oracle迁移到postgres数据库

conf文件有以下修改:

  • 提供ORACLE_主页和DSN
  • 将导出类型设置为:
    type、TABLE、PACKAGE、COPY、VIEW、GRANT、SEQUENCE、TRIGGER、FUNCTION、PROCEDURE、TABLESPACE、type、PARTITION、MVIEW、QUERY
    (已删除FDW)
  • 运行该工具时,出现以下错误:

    DBD::Oracle::db准备失败:ORA-01741:零长度非法 标识符(DBD E错误:OCISMTPREPARE)[对于语句“SELECT FROM 位于D:/dwimpel/perl/site/lib/Ora2Pg.pm的“.GT\u层实体”a“] 第8808行。致命错误:ORA-01741:非法的零长度标识符(DBD 错误:OCISMTPREPARE)正在中止导出

    我提供的用户具有DBA权限

    请让我知道,如果你有任何解决办法


    谢谢

    您确实安装了正确版本的
    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数据库和用户以进行导入。

    来自“.”“GT\u LAYER\u ENTITIES”
    -缺少架构(=oracle中的用户)。我想您需要将这些信息添加到ORA2PG配置中。我认为这是oracle空间模式。但我不明白为什么我需要出口它。我已经在conf文件中提供了datasource sid=in DSN设置,这就是我需要的所有数据。这个工具不应该从oracle特定的模式转换到Postgres特定的模式吗。无论如何,从我在设置模式MDSYS中提到的内容。在此之后,另一个表“”会出现相同的错误。。即使设置导出模式1也没有效果。为什么要导出MDSYS模式?这是一个Oracle内部模式。我很怀疑你在研究生中是否需要这样做。您应该只导出存储应用程序数据的架构。我将架构MDSYS替换为架构。但这导致:0个表、包。。。为了导出,所以添加了export_SCHEMA 1,它仍然给出了0个表、包…要导出,请检查这有什么问题,在我的conf文件中我有:ORACLE_DSN dbi:ORACLE:host=;sid=ORACLE\U USER用户ORACLE\U PWD USER EXPORT\U SCHEMA 1 SCHEMA和上述导出类型表、包、副本…rest与默认值相同。请检查有什么问题,或者我还需要提供什么,如果我删除了导出类型COPY,它只导出模式,那么需要添加到conf文件的COPY是什么