关于ociuldr_MySQL, Oracle及数据库讨论区_Weblogic技术|Tuxedo技术|中间件技术|Oracle论坛|JAVA论坛|Linux/Unix技术|hadoop论坛_联动北方技术论坛  
网站首页 | 关于我们 | 服务中心 | 经验交流 | 公司荣誉 | 成功案例 | 合作伙伴 | 联系我们 |
联动北方-国内领先的云技术服务提供商
»  游客             当前位置:  论坛首页 »  自由讨论区 »  MySQL, Oracle及数据库讨论区 »
总帖数
1
每页帖数
101/1页1
返回列表
0
发起投票  发起投票 发新帖子
查看: 2293 | 回复: 0   主题: 关于ociuldr        下一篇 
DJYang
注册用户
等级:列兵
经验:91
发帖:67
精华:0
注册:2011-8-8
状态:离线
发送短消息息给DJYang 加好友    发送短消息息给DJYang 发消息
发表于: IP:您无权察看 2015-12-18 17:20:57 | [全部帖] [楼主帖] 楼主

将ociuldr.exe复制到H:\oracle\product\10.2.0\db_1\BIN下, 或者path中的某个文件夹中

用法:

C:\Documents and Settings\tgm>ociuldr
Usage: ociuldr user=... query=... field=... record=... file=...
(@) Copyright Lou Fangxin 2004/2005, all rights reserved.
Notes:      
  -si   = enable logon as SYSDBA     
  user = username/password@tnsname      
  sql   = SQL file name,one sql per file, do not include ";"      
  query = select statement       
  field = seperator string between fields       
  record= seperator string between records       
  file = output file name(default: uldrdata.txt)       
  read = set DB_FILE_MULTIBLOCK_READ_COUNT at session level       
  sort = set SORT_AREA_SIZE & SORT_AREA_RETAINED_SIZE at session level (UNIT:MB)       
  hash = set HASH_AREA_SIZE at session level (UNIT:MB)       
  serial= set _serial_direct_read to TRUE at session level       
  trace = set event 10046 to given level at session level       
  table = table name in the sqlldr control file       
  mode = sqlldr option, INSERT or APPEND or REPLACE or TRUNCATE       
  log   = log file name, prefix with + to append mode       
  long = maximum long field size       
  array = array fetch size        
  head = 第一行是否为字段名(head=on), 默认为off
for field and record, you can use '0x' to specify hex character code,\r=0x0d \n=0x0a |=0x7c ,=0x2c \t=0x09


一、导出数据

d:\>ociuldr 
user=test/test@acf
query="select * from test" file=test.txt table=test


二、查看导出内容

1,a
2,b
3,c
4,d
5,e
6,f


三、查看自动生成的控制文件

--
-- Generated by OCIULDR
--
OPTIONS(BINDSIZE=8388608,READSIZE=8388608,ERRORS=-1,ROWS=50000)
LOAD DATA
INFILE 'test.txt' "STR X'0a'"
INTO TABLE test
FIELDS TERMINATED BY X'2c' TRAILING NULLCOLS 
(
ID CHAR(40),
NAME CHAR(10)
)


四、可以尝试使用这个控制文件将数据加载到数据库中

d:\>sqlldr 
test/test@acf 
control=test_sqlldr.ctl


这样数据就加载到数据库中。对于大数据库表的导出ociuldr工具还支持按照不同的批量导出数据,这通过一个参数batch来实现,默认一个batch是 50万条记录,如果不指定batch为2就表示100万条记录换一个文件,默认这个选项值是0,就是指不生成多个文件。

在指定batch选项后,需要指定file选项来定义生成的文件名,文件名中间需要包含“%d”字样,在生成文件时,“%d”会打印成序号,请看以下一个测试:

D:\>ociuldr 
user=test/test@acf 
query="select * from test" batch=1 file=test_%d.txt table=test


测试了一下,用spool按要求导出10万条记录要好几分钟, 用ociuldr导出来用了一秒,或许一秒都不到。




--转自



赞(0)    操作        顶端 
总帖数
1
每页帖数
101/1页1
返回列表
发新帖子
请输入验证码: 点击刷新验证码
您需要登录后才可以回帖 登录 | 注册
技术讨论