RHES 7.7下使用ora2pg迁移Oracle数据报错Can't locate DBD/Pg.pm
解决ora2pg导出数据到平面文件时的DBD::Pg缺失问题
1. 修正命令参数(优先方案)
你当前命令中指定的--pg_dsn参数是用于直接将数据导入PostgreSQL数据库的场景,但实际需求是导出到本地平面文件(通过> data/data.csv重定向)。ora2pg导出到平面文件仅需连接Oracle读取数据,完全不需要依赖PostgreSQL驱动,因此可以直接去掉该参数,修改后的命令:
ora2pg -c config/ora2pg.conf -t COPY > data/data.csv
执行此命令后,不会再触发DBD::Pg的依赖检查,即可正常导出数据到平面文件。
2. 若确实需要安装perl-DBD-Pg(如后续需直接导入PG)
如果之后需要直接将数据导入PostgreSQL,必须安装perl-DBD-Pg,解决yum无可用包的方法如下:
- 启用RHEL官方可选频道:RHEL7的perl-DBD-Pg包存在于官方可选频道中,执行以下命令启用并安装:
subscription-manager repos --enable rhel-7-server-optional-rpms yum install perl-DBD-Pg - 使用EPEL源:若未订阅RHEL官方源,可先安装EPEL源,再执行安装命令:
# 先安装EPEL源发布包(若本地yum无此包,需手动获取对应RHEL7的rpm文件安装) yum install epel-release yum install perl-DBD-Pg - 源码编译安装:如果以上方法均不可行,可手动编译安装DBD::Pg:
- 先安装编译依赖:
yum install perl-DBI postgresql-devel gcc make - 通过CPAN安装:
或手动编译源码:cpan DBD::Pg# 从CPAN下载DBD::Pg源码包并解压后执行 perl Makefile.PL make make test make install
- 先安装编译依赖:
补充说明
ora2pg导出schema功能正常,说明Oracle相关的Perl驱动(DBD::Oracle)已正确配置,问题仅出在PostgreSQL驱动的不必要依赖上。若仅需导出到平面文件,优先采用修正命令参数的方案即可快速解决问题。
内容的提问来源于stack exchange,提问作者Mich Talebzadeh
相关产品推荐
相关产品推荐

