| |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
-> 大数据 -> ora2pg 导出Oracle数据 -> 正文阅读 |
|
[大数据]ora2pg 导出Oracle数据 |
当要将 Oracle 中的数据迁移到 PG中时,我们选择 ora2pg,经过实测,ora2pg导出和转换Oracle的数据,效果是很好的,如果配置适当,速度很快,也没有错误。 但是,我们不用ora2pg导出Oracle的表定义,或者其它对象的定义,因为不太好控制。 用ora2pg导出Oracle表数据时,每个表的数据导出为一个文件。 安装: ora2pg是用perl编写的开源软件,我们使用编译安装的方式(难以制作可移植的perl+ora2pg二进制安装包),以root用户编译安装。 sudo yum install perl-devel sudo yum install perl-DBI ora2pg需要Oracle客户端库: sudo rpm -ivh oracle-instantclient12.2-basic-12.2.0.1.0-1.x86_64.rpm sudo rpm -ivh oracle-instantclient12.2-devel-12.2.0.1.0-1.x86_64.rpm sudo rpm -ivh oracle-instantclient12.2-jdbc-12.2.0.1.0-1.x86_64.rpm sudo rpm -ivh oracle-instantclient12.2-sqlplus-12.2.0.1.0-1.x86_64.rpm 然后设置环境变量,也可以放到~/.bash_profile中: export ORACLE_HOME=/usr/lib/oracle/12.2/client64 export LD_LIBRARY_PATH=/usr/lib/oracle/12.2/client64/lib:$LD_LIBRARY_PATH export PATH=/usr/lib/oracle/12.2/client64/bin:$PATH export NLS_LANG=AMERICAN_AMERICA.AL32UTF8 DBD-Oracle-1.80是Perl连接Oracle的模块,包含动态链接库,安装ora2pg之前先安装它,采用编译安装: cd DBD-Oracle-1.80 perl Makefile.PL make sudo make install 然后安装ora2pg,也是以编译的方式安装: cd ora2pg perl Makefile.PL make sudo make install ora2pg目录下有一个ora2pg.conf,这是ora2pg的配置文件,需要关系的设置如下: 这些参数注释掉,我们会在调用ora2pg时以参数形式传入。? 以右边为准 ??DATA_LIMIT和LONGREADLEN根据需要调整,DATA_LIMIT x LONGREADLEN 是读取一次占用的内存。LONGREADLEN越小读取速度越快,在700多个记录大小不同的表中测试,LONGREADLEN设为1M,10个线程select读取速度可以达到6万条记录每秒,2M时1700记录每秒,30M时50记录每秒。 但导出表时,LONGREADLEN太小会失败,LONGREADLEN应大于表中数据量最大的那条记录。 LOB_CHUNK_SIZE设为4M据说能提高速度,但是在我的场景中实测没有什么效果。 USE_LOB_LOCATOR ?1 ENABLE_BLOB_EXPORT ? ? ?1 使用: 安装好ora2pg后,使用脚本ora2pg_dump.sh导出Oracle数据,这个脚本需要输入:
例如命令: ora2pg_dump.sh -s "dbi:Oracle:host=172.32.150.13;sid=nlpass01;port=1521" -u paastest -w Paas1015 -b output -i table_list.txt -n paastest -P 10 ora2pg_dump.sh文件内容如下:
导出结果示例:
它检查有没导出失败的表,失败则打印,否则没有任何打印: ORA-24345: A Truncation or null fetch error occurred (DBD SUCCESS_WITH_INFO: OCIStmtFetch, LongReadLen too small and/or LongTruncOk not set) ?解决方法: PG导入数据: 每个表的数据对应一个sql文件,使用generate_import_scripts.sh为psql生成总的导入脚本: 为了加快PG大数据量的一次性导入,先不创建表的主键、索引、外键、约束,待全量数据导入完后再创建。 |
|
|
上一篇文章 下一篇文章 查看所有文章 |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 | -2024/11/24 4:45:24- |
|
网站联系: qq:121756557 email:121756557@qq.com IT数码 |