[转帖]sqluldr2 oracle直接导出数据为文本的小工具使用
https://www.cnblogs.com/ocp-100/p/11098373.html
近期客户有需求,导出某些审计数据,供审计人进行核查,只能导出成文本或excel格式的进行查看,这里我们使用sqluldr2工具进行相关数据的导出。
oracle导出数据为文本格式比较麻烦,sqluldr2是灵活的强大的oracle文本导出程序,是之前阿里大拿首席dba楼方鑫开发的小工具,oracle有自己的一个sqlldr工具,是将文本载入到oracle库中用的,而现在这个sqluldr中间加了个u是un的意思,小工具是用oracle的C语言接口写成,短小精干运行速度快,工具很强大,而且批量导出效率非常高,使用灵活,多个平台版本都有对应的工具。
命令参数:
|
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
|
./sqluldr2SQL*UnLoader: Fast Oracle Text Unloader (GZIP, Parallel), Release 4.0.1(@) Copyright Lou Fangxin (AnySQL.net) 2004 - 2010, all rights reserved.License: Free for non-commercial useage, else 100 USD per server.Usage: SQLULDR2 keyword=value [,keyword=value,...]Valid Keywords: user = username/password@tnsname sql = SQL file name query = select statement field = separator string between fields record = separator string between records rows = print progress for every given rows (default, 1000000) file = output file name(default: uldrdata.txt) log = log file name, prefix with + to append mode fast = auto tuning the session level parameters(YES) text = output type (MYSQL, CSV, MYSQLINS, ORACLEINS, FORM, SEARCH). charset = character set name of the target database. ncharset= national character set name of the target database. parfile = read command option from parameter file for field and record, you can use '0x' to specify hex character code, \r=0x0d \n=0x0a |=0x7c ,=0x2c, \t=0x09, :=0x3a, #=0x23, "=0x22 '=0x27 |

- 直接指定sql(适合query比较长的一些语句,结果集直接输出到对应的文件里)
|
1
2
|
[oracle@m1 ~]$vi query.sqlSELECT * FROM ( SELECT A.*, rownum r FROM (select aa.* ,bb.aac003,bb.aac058,bb.aac147 from GIOISX.ac10 aa,GIOISX.ac01 bb where 1=1 and aa.aac001=bb.aac001 and aa.batchid=101 order by aa.aac001,aae003,aae140 ) A WHERE rownum < =30) B WHERE r >0 |
|
1
2
3
4
|
#./sqluldr2 system/welcoii@cfsgal sql=/home/oracle/query.sql mode=APPEND head=yes file=/home/oracle/jgyl_ad50_%B.csv batch=yes rows=5000 0 rows exported at 2019-06-27 16:21:27, size 0 MB. 30 rows exported at 2019-06-27 16:21:27, size 0 MB. output file /home/oracle/jgyl_ad50_1.csv closed at 30 rows, size 0 MB. |
- 常规导出(head=yes 表示输出表头 log是记录日志)
|
1
|
sqluldr2 hr/hr123@127.0.0.1:1521/XE query="select * from bb_user_t" head=yes file=D:\sqluldr2\File\tmp001.csv log=D:\sql.log orlog=+D:\sqluldr2\File\tmp003.log 如果有日志在日志后追加日志,否则覆盖替换 |
- 使用table参数(“TABLE”选项用于指定将文件导入的目标表的名字,例如我们将EMP 表的数据导入到EMP_HIS 表中,假设这两个表的表结构一致,先用如下命令导出数据:Sqluldr2 … query=”select * from emp” file=emp.txt table=emp_his ……,或生成相应的导入控制文件)
|
1
|
sqluldr2 hr/hr123@127.0.0.1:1521/XE query="select * from bb_user_t" table=temp_004 head=yes file=D:\sqluldr2\File\tmp004.csv |
- 大批量导出(对于大表可以输出到多个文件中,指定行数分割或者按照文件大小分割,当文件名(“FILE”选项)的后缀以小写的“.gz”结尾时,会将记录直接写入到GZIP格式的压缩文件中,如果要归档大量数据,这个功能可以节约很多的存贮空间,降低运营成本)
|
1
2
3
4
5
6
7
8
9
10
|
sqluldr2 system/welc1@sl query="select * from GIOISX.AD50 where rownum<20000" table=GIOISX.AD50 mode=APPEND head=yes file=/home/oracle/jgyl_ad50_%B.csv batch=yes rows=5000 0 rows exported at 2019-06-27 16:08:42, size 0 MB. 5000 rows exported at 2019-06-27 16:08:43, size 0 MB. output file /home/oracle/jgyl_ad50_1.csv closed at 5000 rows, size 1 MB. 5000 rows exported at 2019-06-27 16:08:43, size 1 MB. output file /home/oracle/jgyl_ad50_2.csv closed at 5000 rows, size 2 MB. 5000 rows exported at 2019-06-27 16:08:43, size 2 MB. output file /home/oracle/jgyl_ad50_3.csv closed at 5000 rows, size 3 MB. 4999 rows exported at 2019-06-27 16:08:43, size 4 MB. output file /home/oracle/jgyl_ad50_4.csv closed at 4999 rows, size 4 MB. |

参数说明:
user = username/password@tnsname
sql = SQL file name
query = select statement (选择语句;query参数如果整表导出,可以直接写表名,如果需要查询运算和where条件,query=“sql文本”,也可以把复杂sql写入到文本中由query调用)
field = separator string between fields (
设置导出文件里的分隔符;
默认是逗号分隔符,通过 field参数指定分隔符;
例如现在要改变默认的字段分隔符,用“#”来分隔记录,导出的命令如下所示:
sqluldr2 test/test sql=tmp.sql field=#
在指定分隔符时,可以用字符的ASCII代码(0xXX,大写的XX为16进制的ASCII码值)来指定一个字符,常用的字符的ASCII代码如下:
回车=0x0d,换行=0x0a,TAB键=0x09,|=0x7c,&=0x26,双引号=0x22,单引号=0x27
在选择分隔符时,一定不能选择会在字段值中出现的字符)
record = separator string between records (记录之间的分隔字符串;分隔符 指定记录分隔符,默认为回车换行,Windows下的换行)
rows = print progress for every given rows (default, 1000000)
file = output file name(default: uldrdata.txt) (输出文件名(默认:uldrdata.txt))
log = log file name, prefix with + to append mode (日志文件名,前缀加+模式)
fast = auto tuning the session level parameters(YES)
text = output type (MYSQL, CSV, MYSQLINS, ORACLEINS, FORM, SEARCH).
charset = character set name of the target database. (目标数据库的字符集名称;导出文件里有中文显示乱码,需要设置参数charset=UTF8)
ncharset= national character set name of the target database.
parfile = read command option from parameter file (从参数文件读取命令选项;可以把参数放到parfile文件里,这个参数对于复杂sql很有用)
read = set DB_FILE_MULTIBLOCK_READ_COUNT at session level
sort = set SORT_AREA_SIZE at session level (UNIT:MB)
hash = set HASH_AREA_SIZE at session level (UNIT:MB)
array = array fetch size
head = print row header(Yes|No)
batch = save to new file for every rows batch (Yes/No) (为每行批处理保存新文件)
size = maximum output file piece size (UNIB: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 (“TABLE”选项用于指定将文件导入的目标表的名字,例如我们将EMP 表的数据导入到EMP_HIS 表中,假设这两个表的表结构一致,先用如下命令导出数据:
Sqluldr2 … query=”select * from emp” file=emp.txt table=emp_his ……)
control = sqlldr control file and path.
mode = sqlldr option, INSERT or APPEND or REPLACE or TRUNCATE
buffer = sqlldr READSIZE and BINDSIZE, default 16 (MB)
long = maximum long field size
width = customized max column width (w1:w2:...)
quote = optional quote string (可选引用字符串;引号符 指定非数字字段前后的引号符)
data = disable real data unload (NO, OFF)
alter = alter session SQLs to be execute before unload
safe = use large buffer to avoid ORA-24345 error (Yes|No) (使用大缓冲器避免ORA-24345错误;ORA-24345: A Truncation or null fetch error occurred,设置参数safe=yes)
crypt = encrypted user information only (Yes|No)
sedf/t = enable character translation function
null = replace null with given value
escape = escape character for special characters
escf/t = escape from/to characters list
format = MYSQL: MySQL Insert SQLs, SQL: Insert SQLs.
exec = the command to execute the SQLs.
prehead = column name prefix for head line.
rowpre = row prefix string for each line.
rowsuf = row sufix string for each line.
colsep = separator string between column name and value.
presql = SQL or scripts to be executed before data unload.
postsql = SQL or scripts to be executed after data unload.
lob = extract lob values to single file (FILE).
lobdir = subdirectory count to store lob files .
split = table name for automatically parallelization.
degree = parallelize data copy degree (2-128).
for field and record, you can use '0x' to specify hex character code,
\r=0x0d \n=0x0a |=0x7c ,=0x2c, \t=0x09, :=0x3a, #=0x23, "=0x22 '=0x27</span>
参考楼方鑫:
sqluldr2超详细使用教程-loracle数据导出工具及方法
[转帖]sqluldr2 oracle直接导出数据为文本的小工具使用的更多相关文章
- sqluldr2 oracle直接导出数据为文本的小工具使用
近期客户有需求,导出某些审计数据,供审计人进行核查,只能导出成文本或excel格式的进行查看,这里我们使用sqluldr2工具进行相关数据的导出. oracle导出数据为文本格式比较麻烦,sqluld ...
- ORACLE导入导出数据dmp
imp testwms3/isc@TESTGMMC FILE=C:\ZKGL_201407012334.dmp ignore=y fromuser=GMMCZKGL touser=testwms ta ...
- Oracle 导入导出数据 imp/exp impdp/expdp
IMPDP/EXPDP 一.创建逻辑目录,该命令不会在操作系统创建真正的目录,最好以system等管理员创建. create directory dpdata as '/opt'; 二 ...
- oracle 导入导出数据
Oracle数据导入导出imp/exp就相当于oracle数据还原与备份.exp命令可以把数据从远程数据库服务器导出到本地的dmp文件,imp命令可以把dmp文件从本地导入到远处的数据库服务器中.利用 ...
- ORACLE 11g 导出数据
ORACLE 11g 导出 表的时候 不会导出空表 导出空表操作步骤 :(使用PLSQL) 1.打开SQL window 执行下面的 SQL Select 'alter table '||table_ ...
- Oracle EXPDP导出数据
Oracle expdp导出表数据(带条件): expdp student/123456@orcl dumpfile=student_1.dmp logfile=student_1.log table ...
- oracle导入导出数据
导入数据,cmd imp 导出数据,cmd exp
- oracle 数据库导出数据
cmd导出数据: exp ZD_ZD_ZDWW/zdzd1402!@11.111.111.213/orcl file=c:\1234.dmp owner=ZD_ZD_ZDWW
- 经纬坐标(BLH)数据创建.kml文件小工具设计 Java版
技术背景 KML,是标记语言(Keyhole Markup Language)的缩写,最初由Keyhole公司开发,是一种基于XML 语法与格式的.用于描述和保存地理信息(如点.线.图像.多边形和模型 ...
- Oracle 数据库导出数据泵(EXPDP)文件存放的位置
数据泵是服务器端工具,导出的文件是放在数据库所在的服务器上,当然我们知道可以通过directory目录对象来控制.目录对象默认有四个级别,当然是有优先级顺序的,优先级从上往下 1.每个文件单独的指定具 ...
随机推荐
- Implicit隐式渲染入门 SDF SphereTracing
Implicit 何为隐式?隐式(Implicit)的是显式(explicit)的反义词. explicit可以简单理解为用网格等信息描述的几何形状,网格信息是离散的,信息量越大描述越精准.Impli ...
- 技术解读丨GaussDB数仓高可用容灾利器之逻辑备份
摘要:GaussDB数仓的Roach工具,同时提供物理备份和逻辑备份两种主要形态的备份.逻辑备份针对数据库的逻辑对象进行抽取和备份,能够有效地应对单表.schema级等较细粒度的备份,较为灵活和便利. ...
- JavaScript回调函数的高手指南
摘要:本文将会解释回调函数的概念,同时帮你区分两种回调:同步和异步. 回调函数是每个前端程序员都应该知道的概念之一.回调可用于数组.计时器函数.promise.事件处理中. 本文将会解释回调函数的概念 ...
- 单向数据流-从共享状态管理:flux/redux/vuex漫谈异步数据处理
不管是Vue,还是 React,都需要管理状态(state),比如组件之间都有共享状态的需要. 什么是共享状态? 比如一个组件需要使用另一个组件的状态,或者一个组件需要改变另一个组件的状态,都是共享状 ...
- Seal 软件供应链防火墙 v0.2 发布,提供依赖项全局洞察
Seal 软件供应链防火墙 v0.2 已于近日发布.这款产品旨在为企业提供代码安全.构建安全.依赖项安全及运行环境安全等4大防护,通过全链路扫描.问题关联及风险组织的方式保护企业软件供应链安全,降低企 ...
- 【django-vue】前后端分离项目
博客目录 pip永久换源 虚拟环境搭建 项目前后端创建 项目目录调整 封装logger 封装全局异常 封装response 数据库配置 用户表继承AbstractUser配置 开放media访问 路飞 ...
- HDU - 2181 :哈密顿绕行世界问题
Descriptions: 一个规则的实心十二面体,它的 20个顶点标出世界著名的20个城市,你从一个城市出发经过每个城市刚好一次后回到出发的城市. Input 前20行的第i行有3个数,表示与第i个 ...
- Codeforces Round #650 (Div. 3) F1经典离散化DP
比赛链接:Here 1367A. Short Substrings Description 一个字符串 abac,然后把所有长度为2的子串加起来变成新串,abbaac,由 ab ba ac组成.现在给 ...
- vue+iviews 动态表格(table组件)
iviews官网上关于table的使用方法是固定表头的使用方法,如何生成动态的table网上找了好多也没有特别合适的,综合几位博主的文章经过尝试终于实现了,分享出来供大家参考 一.先看官网上的样例 官 ...
- <vue 路由 7、导航守卫>
导航守卫 一. 知识点 1.什么是导航守卫? (1)vue-router提供的导航守卫主要用来监听路由的进入和离开. (2)vue-router提供了beforeEach和afterEach的 ...