ORACLE 使用sqluldr2和sqlldr进行导入导出

oracle数据导出工具sqluldr2可以将数据以csv、txt等格式导出,适用于大批量数据的导出,导出速度非常快。导出后可以使用oracle loader工具将数据导入。

简介:

Sqluldr2:专业用于大数据量导出工具之一,效率比普通导出快70%。 ( Sqlldr:专业用于导入的工具之一,请注意两个工具的区别。),在使用时,最好用磁盘写入速度快,网络好,网速快的做。

工具列表:

针对不同平台用不同的导出工具:

Windows:     sqluldr2.exe

Linux(32位): sqluldr2_linux32_10204.bin

Linux(64位):   sqluldr2_linux64_10204.bin

使用说明 (Windows平台):

使用sqluldr2的步骤:

1.打开运行àcmd进入到sqluldr2.exe的当前目录

2.参数介绍

User=用户/密码@tns

Query=”查询语句”

File= 导出的路径

Head= 输出信息时,yes表示要表头,no表示不要表头

注意:想查看更多参数,请输入 sqluldr2 help=yes

[sql] view plain copy

  1. C:\Users\meng\Desktop\sqluldr2>sqluldr2.exe help=yes
  2. SQL*UnLoader: Fast Oracle Text Unloader (GZIP, Parallel), Release 4.0.1
  3. (@) Copyright Lou Fangxin (AnySQL.net) 2004 - 2010, all rights reserved.
  4. License: Free for non-commercial useage, else 100 USD per server.
  5. Usage: SQLULDR2 keyword=value [,keyword=value,...]
  6. Valid Keywords:
  7. user    = username/[email protected]
  8. sql     = SQL file name
  9. query   = select statement
  10. field   = separator string between fields
  11. record  = separator string between records
  12. rows    = print progress for every given rows (default, 1000000)
  13. file    = output file name(default: uldrdata.txt)
  14. log     = log file name, prefix with + to append mode
  15. fast    = auto tuning the session level parameters(YES)
  16. text    = output type (MYSQL, CSV, MYSQLINS, ORACLEINS, FORM, SEARCH).
  17. charset = character set name of the target database.
  18. ncharset= national character set name of the target database.
  19. parfile = read command option from parameter file
  20. read    = set DB_FILE_MULTIBLOCK_READ_COUNT at session level
  21. sort    = set SORT_AREA_SIZE at session level (UNIT:MB)
  22. hash    = set HASH_AREA_SIZE at session level (UNIT:MB)
  23. array   = array fetch size
  24. head    = print row header(Yes|No)
  25. batch   = save to new file for every rows batch (Yes/No)
  26. size    = maximum output file piece size (UNIB:MB)
  27. serial  = set _serial_direct_read to TRUE at session level
  28. trace   = set event 10046 to given level at session level
  29. table   = table name in the sqlldr control file
  30. control = sqlldr control file and path.
  31. mode    = sqlldr option, INSERT or APPEND or REPLACE or TRUNCATE
  32. buffer  = sqlldr READSIZE and BINDSIZE, default 16 (MB)
  33. long    = maximum long field size
  34. width   = customized max column width (w1:w2:...)
  35. quote   = optional quote string
  36. data    = disable real data unload (NO, OFF)
  37. alter   = alter session SQLs to be execute before unload
  38. safe    = use large buffer to avoid ORA-24345 error (Yes|No)
  39. crypt   = encrypted user information only (Yes|No)
  40. sedf/t  = enable character translation function
  41. null    = replace null with given value
  42. escape  = escape character for special characters
  43. escf/t  = escape from/to characters list
  44. format  = MYSQL: MySQL Insert SQLs, SQL: Insert SQLs.
  45. exec    = the command to execute the SQLs.
  46. prehead = column name prefix for head line.
  47. rowpre  = row prefix string for each line.
  48. rowsuf  = row sufix string for each line.
  49. colsep  = separator string between column name and value.
  50. presql  = SQL or scripts to be executed before data unload.
  51. postsql = SQL or scripts to be executed after data unload.
  52. lob     = extract lob values to single file (FILE).
  53. lobdir  = subdirectory count to store lob files .
  54. split   = table name for automatically parallelization.
  55. degree  = parallelize data copy degree (2-128).
  56. hint    = MySQL SQL hint for the Insert, for example IGNORE.
  57. unique  = Unique Column List for the MySQL target table.
  58. update  = Enable MySQL ON DUPLICATE SQL statement(YES/NO).
  59. for field and record, you can use ‘0x‘ to specify hex character code,
  60. \r=0x0d \n=0x0a |=0x7c ,=0x2c, \t=0x09, :=0x3a, #=0x23, "=0x22 ‘=0x27
  61. C:\Users\meng\Desktop\sqluldr2>

代码例子1:

sqluldr2.exe USER=用户/密码@tnsQUERY="select  
/*+ parallel(8)  */  *from cs_XXX dt,cfg_XXX devdim105
wheredt.starttime>=to_date(‘2012-06-27
00:00:00‘,‘yyyy-mm-dd hh24:mi:ss‘) and
dt.starttime<=to_date(‘2012-06-2700:01:59‘,‘yyyy-mm-dd hh24:mi:ss‘)
AND dt.msc= devdim105.mapvalue(+) ANDdevdim105.deviceid=15 " head=yes
FILE=F:\cs_XXX_test.csv

代码例子2(这种方式用于导出的查询sql很长,那么就把sql写在123.sql文件里 ):

sqluldr2.exe USER=用户/密码@tns  sql=123.sqlhead=yes FILE=F:\cs_XXX_test.csv

3.在cmd里,直接把步骤2的代码例子1 ,贴进去执行。

注:如果执行报报错,就有可能是环境变量path的问题,还有就是plsql需要的oci.dll文件等多个dll文件,请放在sqluldr2的目录下。

4.查看结果F:\cs_XXX_test.csv

5.打开csv里面的内容,就可以用sqlldr进行 入库。

--如果是linux版本

[html] view plain copy

  1. [[email protected] export_xdr]# ./sqluldr2_linux64_10204.bin
  2. SQL*UnLoader: Fast Oracle Text Unloader (GZIP, Parallel), Release 4.0.1
  3. (@) Copyright Lou Fangxin (AnySQL.net) 2004 - 2010, all rights reserved.
  4. Usage: SQLULDR2 keyword=value [,keyword=value,...]
  5. Valid Keywords:
  6. user    = username/[email protected]
  7. sql     = SQL file name
  8. query   = select statement
  9. field   = separator string between fields
  10. record  = separator string between records
  11. rows    = print progress for every given rows (default, 1000000)
  12. file    = output file name(default: uldrdata.txt)
  13. log     = log file name, prefix with + to append mode
  14. fast    = auto tuning the session level parameters(YES)
  15. text    = output type (MYSQL, CSV, MYSQLINS, ORACLEINS, FORM, SEARCH).
  16. charset = character set name of the target database.
  17. ncharset= national character set name of the target database.
  18. parfile = read command option from parameter file
  19. for field and record, you can use ‘0x‘ to specify hex character code,
  20. \r=0x0d \n=0x0a |=0x7c ,=0x2c, \t=0x09, :=0x3a, #=0x23, "=0x22 ‘=0x27

[html] view plain copy

  1. [[email protected] export_xdr]# cd /usr/lib/oracle/11.2/client64/lib/
  2. [[email protected] lib]# ls
  3. glogin.sql    libclntsh.so.10.1  libnnz11.so  libocci.so.11.1  libocijdbc11.so  libsqlplus.so  ojdbc6.jar      xstreams.jar
  4. libclntsh.so  libclntsh.so.11.1  libocci.so   libociei.so      libsqlplusic.so  ojdbc5.jar     ottclasses.zip
  5. [[email protected] lib]# ls -l
  6. total 185012
  7. -rw-r--r-- 1 root root       368 Sep 17  2011 glogin.sql
  8. lrwxrwxrwx 1 root root        17 Jan 26 17:08 libclntsh.so -> libclntsh.so.11.1
  9. lrwxrwxrwx 1 root root        12 Jan 26 17:31 libclntsh.so.10.1 -> libclntsh.so
  10. -rw-r--r-- 1 root root  52761218 Sep 17  2011 libclntsh.so.11.1
  11. -rw-r--r-- 1 root root   7955322 Sep 17  2011 libnnz11.so
  12. lrwxrwxrwx 1 root root        15 Jan 26 17:08 libocci.so -> libocci.so.11.1

[html] view plain copy

  1. [[email protected] export_xdr]# history |grep ln
  2. 94  find / -name libclntsh.so.10.1
  3. 95  find / -name libclntsh.so
  4. 116  find / -name libclntsh.so
  5. 127  ln libclntsh.so.10.1 libocci.so
  6. 128  ln libocci.so libclntsh.so.10.1
  7. 130  rm libclntsh.so.10.1 -f
  8. 132  ln libclntsh.so libclntsh.so.10.1
  9. 134  rm libclntsh.so.10.1 -f
  10. 135  ln libclntsh.so.10.1 libclntsh.so

[html] view plain copy

  1. ./sqluldr2_linux64_10204.bin user=unxx/密码@192.168.x.x:1521/unxx query="select/*+ parallel(2) */STARTTIME, ENDTIME,phone,imei,rantype,HCITY from v_ps_xxx dt,mv_terminal cc  where endtime_par>=trunc(sysdate)-1 and endtime_par<trunc(sysdate)-1+1/24 and dt.TACID=cc.TACID(+) " head=yes field=0x09 text=txt file=‘/BigData/export_xdr/exportting.txt.tmp‘;

补充:

兄弟们,在安装的时候,是不是经常遇到报错?

比如:

[html] view plain copy

  1. [[email protected] ~]# ./sqluldr2_linux64_10204.bin
  2. ./sqluldr2_linux64_10204.bin: error while loading shared libraries: libclntsh.so.10.1: cannot open shared object file: No such file or directory
  3. [[email protected] ~]# more /etc/profile

方法一:

这个so文件,在安装oracle后,肯定是有的,如果没有可以用软连接 ln -s xxxx  libclntsh.so.10.1

1.下面只需配置 LD_LIBRARY_PATH

export ORACLE_HOME=/u01/app/Oracle/product/11.2.0/dbhome_1

export LD_LIBRARY_PATH=$ORACLE_HOME/lib:$LD_LIBRARY_PATH

export PATH=$PATH:$ORACLE_HOME:$ORACLE_HOME/bin

[html] view plain copy

  1. [[email protected] lib]$ more /etc/profile
  2. # /etc/profile
  3. # System wide environment and startup programs, for login setup
  4. # Functions and aliases go in /etc/bashrc
  5. pathmunge () {
  6. if ! echo $PATH | /bin/egrep -q "(^|:)$1($|:)" ; then
  7. if [ "$2" = "after" ] ; then
  8. PATH=$PATH:$1
  9. else
  10. PATH=$1:$PATH
  11. fi
  12. fi
  13. }
  14. # ksh workaround
  15. if [ -z "$EUID" -a -x /usr/bin/id ]; then
  16. EUID=`id -u`
  17. UID=`id -ru`
  18. fi
  19. # Path manipulation
  20. if [ "$EUID" = "0" ]; then
  21. pathmunge /sbin
  22. pathmunge /usr/sbin
  23. pathmunge /usr/local/sbin
  24. fi
  25. # No core files by default
  26. ulimit -S -c 0 > /dev/null 2>&1
  27. if [ -x /usr/bin/id ]; then
  28. USER="`id -un`"
  29. LOGNAME=$USER
  30. MAIL="/var/spool/mail/$USER"
  31. fi
  32. HOSTNAME=`/bin/hostname`
  33. HISTSIZE=1000
  34. if [ -z "$INPUTRC" -a ! -f "$HOME/.inputrc" ]; then
  35. INPUTRC=/etc/inputrc
  36. fi
  37. export PATH USER LOGNAME MAIL HOSTNAME HISTSIZE INPUTRC
  38. # By default, we want umask to get set. This sets it for login shell
  39. # Current threshold for system reserved uid/gids is 200
  40. # You could check uidgid reservation validity in
  41. # /usr/share/doc/setup-*/uidgid file
  42. if [ $UID -gt 99 ] && [ "`id -gn`" = "`id -un`" ]; then
  43. umask 002
  44. else
  45. umask 022
  46. fi
  47. for i in /etc/profile.d/*.sh ; do
  48. if [ -r "$i" ]; then
  49. if [ "${-#*i}" != "$-" ]; then
  50. . $i
  51. else
  52. . $i >/dev/null 2>&1
  53. fi
  54. fi
  55. done
  56. unset i
  57. unset pathmunge
  58. export LANG=en_US.UTF-8
  59. export ORACLE_HOME=/u01/app/oracle/product/11.2.0/dbhome_1
  60. export LD_LIBRARY_PATH=$ORACLE_HOME/lib:$LD_LIBRARY_PATH
  61. export TNS_ADMIN=/usr/lib/oracle/11.1/client64/
  62. export PATH=$PATH:$ORACLE_HOME:$ORACLE_HOME/bin

2.source /etc/profile

成功。

方法二:(来自其他网友)

[html] view plain copy

    1. 如果共享库文件安装到了/usr/local/lib(很多开源的共享库都会安装到该目录下)或其它"非/lib或/usr/lib"目录下, 那么在执行ldconfig命令前, 还要把新共享库目录加入到共享库配置文件/etc/ld.so.conf中, 如下:
    2. # cat /etc/ld.so.conf
    3. include ld.so.conf.d/*.conf
    4. # echo "/usr/local/lib" >> /etc/ld.so.conf
    5. # ldconfig

----实例演示

下载完sqluldr2,文件夹内容如下:

sqluldr2_linux32_10204.bin和sqluldr2_linux64_10204.bin分别适用于与linux32位和linux64位操作系统;

sqluldr2.exe用于windows平台。

以下是导出导入过程:

1、首先将sqluldr2.exe复制到到$ORACLE_HOME的bin目录,即可开始使用:

2、查看help帮助:

3、执行导出数据命令:

sqluldr2.exe
USER=hh/[email protected] QUERY="select /*+ parallel(2) */  *from hh.ent_person"
table=ent_person head=yes FILE=C:\ent_person.txt

p.s. head=yes表示第一行为表头;并且query也可以写入一个文件然后使用sql选项。

默认分隔字符为逗号,如果列中有特殊字符,可使用field选项指定新的分隔字符。

4、数据已经导入到C:\ent_person.txt,几十万数据秒速。

5、使用sqlldr进行导入,首先找到$ORACLE_HOME的bin目录生成的ctl文件,当sqluldr2有table选项会默认生成ctl文件,以用于导入。

6、将数据加载到数据库中:

sqlldr jms/[email protected]
control=ent_person_sqlldr.ctl log=ent_person_sqlldr.log
bad=ent_person_sqlldr_bad.log skip=1  errors=5000 rows=5000
bindsize=335542

p.s. skip=1表示跳过第一行,从第二行开始导入。

7、最后查看log是否有数据没有导入:

时间: 2024-12-17 04:52:18

ORACLE 使用sqluldr2和sqlldr进行导入导出的相关文章

Oracle 12c pdb的数据泵导入导出

12c推出了可插拔数据库,在一个容器cdb中以多租户的形式同时存在多个数据库pdb.在为pdb做数据泵导入导出时和传统的数据库有少许不同.           1,需要为pdb添加tansnames           2,导入导出时需要在userid参数内指定其tansnames的值,比如 userid=user/[email protected]   数据泵导入导出例子 1.查看当前的SID,查看pdb并切换到容器数据库,这里的pluggable数据库是pdborcl [[email pro

Oracle中用exp/imp命令快速导入导出数据

from: http://blog.csdn.net/wangchunyu11155/article/details/53635602 [用 exp 数 据 导 出]: 1 将数据库TEST完全导出,用户名system 密码manager 导出到D:\daochu.dmp中   exp system/[email protected] file=d:\daochu.dmp full=y 2 将数据库中system用户与sys用户的表导出   exp system/[email protected

Oracle 12c pdb使用expdp/impdp导入导出

12c推出了可插拔数据库,在一个容器cdb中以多租户的形式同时存在多个数据库pdb.在为pdb做数据泵导入导出时和传统的数据库有少许不同. 1,需要为pdb添加tansnames 2,导入导出时需要在userid参数内指定其tansnames的值,比如 userid=user/[email protected] 数据泵导出 1.查看当前的SID,查看pdb并切换到容器数据库,这里的pluggable数据库是pdborcl [[email protected] admin]$ echo $ORAC

Oracle数据库的创建、数据导入导出

如何结合Sql脚本和PL/SQL Developer工具来实现创建表空间.创建数据库.备份数据库.还原数据库等操作,然后实现Oracle对象创建.导入数据等操作,方便我们快速了解.创建所需要的部署Sql脚本和数据库操作. 1.数据库创建脚本 首先使用dba身份登录数据库. /*删除表空间*/ --DROP TABLESPACE whc_tbs INCLUDING CONTENTS AND DATAFILES CASCADE CONSTRAINTS; --建立数据文件 create tablesp

Oracle基础 exp/imp 数据泵导入/导出 命令

一.导出方式: 使用exp/imp方式导出数据分为四种方式: 1.表方式导出:一个或多个指定的表,包括表的定义.表数据.表的所有者授权.表索引.表约束,以及创建在该表上的触发器.也可以只导出结构,不导出数据.还可以导出用户所拥有的全部表,还可以指定导出的表的分区. 2.用户方式导出:用户模式的所有对象以及对象中的数据. 3.表空间方式导出:包含在指定表空间中的所有对象,以及对象上的索引定义. 4.全部数据库方式导出:是指数据库中的所有对象,包括表空间.用户及模式中的所有对象(表.视图.序列.同义

oracle学习笔记 回收站&amp;用户权限&amp;导入导出

闪回删除的表: 删除表: drop table aa; drop table aa purge; 不经过回收站,不能闪回 闪回删除的表语法:--所谓闪回的意思就是还原回收站中的表 FLASHBACK TABLE [schema.]<table_name> TO {[BEFORE DROP [RENAME TO table]] [ENABLE|DISABLE]TRIGGERS} 查看回收站 show recyclebin 清空回收站 purge recyclebin; 重名的对象: 会先闪回后删

[独孤九剑]Oracle知识点梳理(三)导入、导出

3.数据库的导入导出(在命令提示符cmd下直接执行) Oracle 9i之前,使用imp/exp命令完成导入/导出操作. 3.1.数据导出 1 --将数据库orcl完全导出到D盘指定目录 2 exp userName/password@orcl file=d:\backup\userName01.dmp log=d:\backup\userName01.log full=y 3 --将 数据库中userName用户和userName2用户的相关内容导出 4 exp userName/passwo

批处理sqlldr数据迁移--oracle txt导入导出(转)

sqlldr数据迁移--oracle txt导入导出 http://coupling001.blog.163.com/blog/static/174925389201262093959635/ 一.sqlldr导入txt 1.预备 a).txt文件 这里要保存成无签名的UTF-8 b).oracle建表 2.编写控制文件input_test.ctl LOAD  DATA CHARACTERSET 'UTF8'    --字符集设定 INFILE 'd:\input_test.txt'     

IT忍者神龟之Oracle 的数据导入导出及 Sql Loader (sqlldr) 的用法

在 Oracle 数据库中,我们通常在不同数据库的表间记录进行复制或迁移时会用以下几种方法: 1. A 表的记录导出为一条条分号隔开的 insert 语句,然后执行插入到 B 表中 2. 建立数据库间的 dblink,然后用 create table B as select * from [email protected] where ...,或 insert into B select * from [email protected] where ... 3. exp A 表,再 imp 到