近期客户有需求,导出某些审计数据,供审计人进行核查,只能导出成文本或excel格式的进行查看,这里我们使用sqluldr2工具进行相关数据的导出。

oracle导出数据为文本格式比较麻烦,sqluldr2是灵活的强大的oracle文本导出程序,是之前阿里大拿首席dba楼方鑫开发的小工具,oracle有自己的一个sqlldr工具,是将文本载入到oracle库中用的,而现在这个sqluldr中间加了个u是un的意思,小工具是用oracle的C语言接口写成,短小精干运行速度快,工具很强大,而且批量导出效率非常高,使用灵活,多个平台版本都有对应的工具。

命令参数:

./sqluldr2

SQL*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比较长的一些语句,结果集直接输出到对应的文件里)

[oracle@m1 ~]$vi query.sql

SELECT * 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

#./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是记录日志)

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 or

log=+D:\sqluldr2\File\tmp003.log 如果有日志在日志后追加日志,否则覆盖替换

使用table参数(“TABLE”选项用于指定将文件导入的目标表的名字,例如我们将EMP 表的数据导入到EMP_HIS 表中,假设这两个表的表结构一致,先用如下命令导出数据:Sqluldr2 … query=”select * from emp” file=emp.txt table=emp_his ……,或生成相应的导入控制文件)

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格式的压缩文件中,如果要归档大量数据,这个功能可以节约很多的存贮空间,降低运营成本)

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

参考楼方鑫:

charset参数 sqluldr2_sqluldr2 oracle直接导出数据为文本的小工具使用相关推荐

  1. mysql 1455_关于Oracle 11g导出数据时 报 ORA-1455错误的处理

    关于Oracle 11g导出数据时 报 ORA-1455错误的处理,由于导出的该用户的表可能存在空数据表,那么可能就会出现此其异常. 关于Oracle 11g导出数据时 报 ORA-1455错误的处理 ...

  2. oracle 数据导入 mysql_oracle数据库导出和oracle导入数据的二种方法(oracle导入导出数据)...

    这篇文章主要介绍了oracle导入导出数据的二种方法,利用PL/SQL Developer工具导出和利用cmd的操作命令导出的出方法,大家参考使用吧 方法一:利用PL/SQL Developer工具导 ...

  3. oracle数据库导出和oracle导入数据的二种方法(oracle导入导出数据)

    这篇文章主要介绍了oracle导入导出数据的二种方法,利用PL/SQL Developer工具导出和利用cmd的操作命令导出的出方法,大家参考使用吧 方法一:利用PL/SQL Developer工具导 ...

  4. Oracle PLSQL 导出数据table xx contains one or more CLOB columns 解决方案

    Oracle PLSQL 导出数据table xx contains one or more CLOB columns 解决方案 参考文章: (1)Oracle PLSQL 导出数据table xx ...

  5. oracle导出数据视频教程,Oracle导入导出数据的几种方式

    oracle导入导出数据 1.导出dmp格式文件 --备份某几张表 !!!! exp smsc/smsc file=/data/oracle_bak/dmp/bakup0209_2.dmp table ...

  6. sqlplus导出oracle数据,Oracle SQLPlus导出数据到csv文件的方法

    这篇文章主要介绍了Oracle SQLPlus导出数据到csv文件,需要的朋友可以参考下 时不时地我们需要导出一些数据用作备份.查看报表等,如果用Sql Developer导出会非常慢.而用SqlPl ...

  7. oracle可以导出的格式,Oracle导入导出数据的几种方式

    oracle导入导出数据 1.导出dmp格式文件 --备份某几张表 !!!! exp smsc/smsc file=/data/oracle_bak/dmp/bakup0209_2.dmp table ...

  8. charset参数 sqluldr2_sqluldr2 学习心得

    前言 最近正在做一个项目,需要导出数据库中的表,但是数据库中有很多带有虚拟列的表,而且表中的数据非常的庞大,有些表中的数据上亿条,项目经理让我研究如何快速导出这些数据. 下面是我研究的一些经历: (1 ...

  9. exp导出excel oracle_如何从Oracle快速导出数据到Excel

    [摘要] 在生产系统使用过程中,常常会有从数据库中导出数据的需求.支持多种导出方式,例如使用spool.utl_file等内置方法导出,利用plsql developer.等第三方工具等. [正文] ...

  10. oracle脚本导出数据文件

    1.首先在服务器上创建目录,以目录/user/mt_data/为例,服务器上执行:mkdir mt_data 2.把目录对oracle用户授予执行的权限 chown -R oracle:oinstal ...

最新文章

  1. 4.6、Libgdx线程介绍
  2. VS2013上利用InstallShield2013LimitedEdition/C#生成安装包
  3. Linux route
  4. MapReduce基础开发之十二ChainMapper和ChainReducer使用
  5. 普通java项目配置mybatis是总是显示数据库驱动找不到
  6. vue+webpack+npm dev环境下内存溢出解决办法
  7. Mybatis+MySQL动态分页查询数据经典案例(含代码以及测试)
  8. PHP和MySQL的交互实验注意事项,PHP 和 MySQL 开发中要注意的8个技巧
  9. 做游戏,学编程(C语言) 6 数组之空战游戏
  10. 【Hadoop2.6】Yarn中任务调度器
  11. FLEX 2.01 全套下载!
  12. Git超详解八 git工作流
  13. FileUpload类别FileUpload1.FileName和FileUpload1.PostedFile.FileName差异
  14. 外贸术语(FOB,CIF,CFR,FCA,CPT,CIP,EXW、FAS、DAF、DES、DEQ、DDU、DDP)
  15. 参考文献起止页码怎么写_期刊作为参考文献要求有年卷期和起止页码,怎么查这些页码什么的...
  16. Laravel接入SDK淘宝客调用
  17. JavaScript —— JSchallenger Arrays 数组练习(测试一下你的 JS 数组基础)【专题二】
  18. nixyx —— 一个小巧的项目工程/编译文件生成器(构建系统?)
  19. Neocities 免费HTML 网站空间,每月200 GB 流量托管静态网页超简单
  20. 游戏服务器和网站,大型网络游戏和大型网站需要服务器的不同

热门文章

  1. 定制自己的Unity场景编辑工具界面(一)
  2. 在网页HTML中嵌入QQ、MSN、旺旺、Gtalk快速对话框代码
  3. 快速掌握——LCD1602液晶显示(多组实验,附带源程序)
  4. Arch Linux下 让MPlayer用上CoreAVC1.7.0.0解码器
  5. 最全面的PLC学习网站
  6. office 2019 word公式键盘输入空格无响应
  7. 俄罗斯地名 中文 英文 俄文
  8. Web前端性能优化的9大问题
  9. 十字链表法和邻接多重表法
  10. 人工智能大数据时代下的工程伦理问题探讨