如何把海量数据从Oracle导入到Mongodb

  

一、背景

  

因为业务需求,现在需要把甲骨文中几千万的数据转移到Mongodb,如果通过PL/SQL开发导出,速度会比较慢,而且也很占用带宽。发现一款软件sqluldr2数据导出速度非常快,我们后面演示通过sqluldr2数据导出。

  

整体思路

  

把甲骨文中的数据导入到csv格式,然后在mongodb中使用mongoimport工具导入到mongo数据库中。

  

下载地址

  

官方下载:http://痢痢羨.anysql.net/software/sqluldr.zip
官方下载:http://痢痢羨.onexsoft.com/zh/download

  

二、安装工具

  

程序放在甲骨文的家目录,第一次执行的时候会报错,它回去寻找<代码> libclntsh.so 这个库文件,这个文件没有在库的环境变量里面,我们可以在甲骨文的安装目录里面找的到,然后我们做个软连接就可以了。

  
 <代码> ln - s/u01/oracle/11.0.2.4/lib/libclntsh。所以/usr/lib64  
  

二、工具参数

  
      <李>切换到甲骨文用户执行工具李   
  
 <代码> SQL *卸荷:快速甲骨文文字卸载(GZIP,平行),版本4.0.1
  (@)版权卢Fangxin (AnySQL.net) 2004 - 2010,保留所有权利。
  
  授权:免费非商业用途,否则100美元每台服务器。
  
  用法:SQLULDR2关键字=价值[关键字=价值,…]
  
  有效的关键词:
  用户=用户名/password@tnsname
  sql=sql文件名
  查询=select语句
  ?字段之间的分隔符字符串
  记录=记录之间的分隔符字符串
  行=打印进步对于每一个给定的行(默认情况下,1000000)
  文件=输出文件名称(默认值:uldrdata.txt)
  日志=日志文件名前缀与+追加模式
  快=自动优化会话水平参数(是的)
  文本=输出类型(CSV, MYSQL数据库,ORACLEINS,形式,搜索)。
  charset=目标数据库的字符集名称。
  ncharset=国家字符集目标数据库的名称。
  parfile=从参数文件中读取命令选项
  阅读=设置DB_FILE_MULTIBLOCK_READ_COUNT在会话水平=在会话级别设置SORT_AREA_SIZE(单位:MB)
  散列=设置HASH_AREA_SIZE会话水平(单位:MB)
  数组=获取数组的大小
  头=打印行标题(是的|不)
  批=保存新文件每一行批处理(是/否)
  大?最大输出文件块大小(UNIB: MB)
  在会话级别串行=_serial_direct_read设置为TRUE
  跟踪=10046年事件级别在会话级别
  表=sqlldr控制文件中的表名
  控制=sqlldr控制文件和路径。
  模式=sqlldr选项,插入或添加或替换或截断
  缓冲=sqlldr READSIZE BINDSIZE,默认16 (MB)
  长=最大字段大小
  宽度=定制的马克斯·列宽(w1: w2:……)
  报价=可选报价字符串
  data=https://www.yisu.com/zixun/disable真实数据卸载(不,)
  改变=改变会话中的卸载之前被执行
  安全=使用大型缓冲区来避免ora - 24345错误(是的|没有)
  地下室=加密用户信息 
  

3,大数据量操作

  

对于大表可以输出到多个文件中,指定行数分割或者按照文件大小分割,例如:

  
 <代码> sqluldr2 testuser/testuser@orcl查询=皊elect * from test_table2”文件=test_table2_ % B。三批=500000=yes行 
  

三,执行导出

  

1,本地执行方式

  

用户参数可以省略不写,和expdp用户名/密码方式一样。

  
 <代码> export ORACLE_SID=orcl
  sqluldr2 testuser/testuser查询=皊elect *从测试”文件=test_table1.txt  
  

2, tns方式

  
 <代码> sqluldr2用户=testuser/testuser@orcl查询=皊elect *从测试”文件=test_table1.txt  
  

3,简易连接

  
 <代码> sqluldr2用户=testuser/testuser@x.x.x。x: 1521/orcl查询=皊elect *从测试”文件=test_table1.txt  
  
  

严格按照要求写语句,等号两边不能有空格。

     

四、实例

  

一切准备就绪之后,切换到甲骨文用户下面,执行下面命令。

  
 <代码> [oracle@cookie ~]美元。/sqluldr2linux64。本用户=收集/gapass@orcl查询=癲mp_user_center”头==/home/oracle/dmp.csv是的文件
  出口在2018-10-09 14:40:27 0行,大小0 MB。
  1000000行出口在1000000 14:40:36,大小80 MB。
  2000000行出口在2000000 14:40:43,大小144 MB。
  3000000行出口在3000000 14:40:50,大小212 MB。
  4000000行出口在4000000 14:40:57,大小276 MB。
  5000000行出口在5000000 14:41:04,大小340 MB。
  6000000行出口在6000000 14:41:11,大小404 MB。
  7000000行出口在7000000 14:41:18,大小460 MB。
  8000000行出口在8000000 14:41:25,大小504 MB。
  9000000行出口在9000000 14:41:31,大小548 MB。
  9403362行出口在9403362 14:41:34,大小568 MB。
  输出文件/home/oracle/dmp.csv收报9403362行,大小568 MB。

如何把海量数据从Oracle导入到Mongodb