本篇内容介绍了“ORACLE怎么进行导入导出数据”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!

简介:

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

C:\Users\meng\Desktop\sqluldr2>sqluldr2.exehelp=yes

SQL*UnLoader:FastOracleTextUnloader(GZIP,Parallel),Release4.0.1

(@)CopyrightLouFangxin(AnySQL.net)2004-2010,allrightsreserved.

License:Freefornon-commercialuseage,else100USDperserver.

Usage:SQLULDR2keyword=value[,keyword=value,...]

ValidKeywords:

user=username/password@tnsname

sql=SQLfilename

query=selectstatement

field=separatorstringbetweenfields

record=separatorstringbetweenrecords

rows=printprogressforeverygivenrows(default,1000000)

file=outputfilename(default:uldrdata.txt)

log=logfilename,prefixwith+toappendmode

fast=autotuningthesessionlevelparameters(YES)

text=outputtype(MYSQL,CSV,MYSQLINS,ORACLEINS,FORM,SEARCH).

charset=charactersetnameofthetargetdatabase.

ncharset=nationalcharactersetnameofthetargetdatabase.

parfile=readcommandoptionfromparameterfile

read=setDB_FILE_MULTIBLOCK_READ_COUNTatsessionlevel

sort=setSORT_AREA_SIZEatsessionlevel(UNIT:MB)

hash=setHASH_AREA_SIZEatsessionlevel(UNIT:MB)

array=arrayfetchsize

head=printrowheader(Yes|No)

batch=savetonewfileforeveryrowsbatch(Yes/No)

size=maximumoutputfilepiecesize(UNIB:MB)

serial=set_serial_direct_readtoTRUEatsessionlevel

trace=setevent10046togivenlevelatsessionlevel

table=tablenameinthesqlldrcontrolfile

control=sqlldrcontrolfileandpath.

mode=sqlldroption,INSERTorAPPENDorREPLACEorTRUNCATE

buffer=sqlldrREADSIZEandBINDSIZE,default16(MB)

long=maximumlongfieldsize

width=customizedmaxcolumnwidth(w1:w2:...)

quote=optionalquotestring

data=disablerealdataunload(NO,OFF)

alter=altersessionSQLstobeexecutebeforeunload

safe=uselargebuffertoavoidORA-24345error(Yes|No)

crypt=encrypteduserinformationonly(Yes|No)

sedf/t=enablecharactertranslationfunction

null=replacenullwithgivenvalue

escape=escapecharacterforspecialcharacters

escf/t=escapefrom/tocharacterslist

format=MYSQL:MySQLInsertSQLs,SQL:InsertSQLs.

exec=thecommandtoexecutetheSQLs.

prehead=columnnameprefixforheadline.

rowpre=rowprefixstringforeachline.

rowsuf=rowsufixstringforeachline.

colsep=separatorstringbetweencolumnnameandvalue.

presql=SQLorscriptstobeexecutedbeforedataunload.

postsql=SQLorscriptstobeexecutedafterdataunload.

lob=extractlobvaluestosinglefile(FILE).

lobdir=subdirectorycounttostorelobfiles.

split=tablenameforautomaticallyparallelization.

degree=parallelizedatacopydegree(2-128).

hint=MySQLSQLhintfortheInsert,forexampleIGNORE.

unique=UniqueColumnListfortheMySQLtargettable.

update=EnableMySQLONDUPLICATESQLstatement(YES/NO).

forfieldandrecord,youcanuse'0x'tospecifyhexcharactercode,

\r=0x0d\n=0x0a|=0x7c,=0x2c,\t=0x09,:=0x3a,#=0x23,"=0x22'=0x27

C:\Users\meng\Desktop\sqluldr2>

代码例子1:

sqluldr2.exeUSER=用户/密码@tnsQUERY="select /*+ parallel(8) */ *from cs_XXX dt,cfg_XXX devdim105 wheredt.starttime>=to_date('2012-06-27 00:00:00','yyyy-mm-dd hh34:mi:ss') and dt.starttime<=to_date('2012-06-2700:01:59','yyyy-mm-dd hh34: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版本

[root@localhostexport_xdr]#./sqluldr2_linux64_10204.bin

SQL*UnLoader:FastOracleTextUnloader(GZIP,Parallel),Release4.0.1

(@)CopyrightLouFangxin(AnySQL.net)2004-2010,allrightsreserved.

Usage:SQLULDR2keyword=value[,keyword=value,...]

ValidKeywords:

user=username/password@tnsname

sql=SQLfilename

query=selectstatement

field=separatorstringbetweenfields

record=separatorstringbetweenrecords

rows=printprogressforeverygivenrows(default,1000000)

file=outputfilename(default:uldrdata.txt)

log=logfilename,prefixwith+toappendmode

fast=autotuningthesessionlevelparameters(YES)

text=outputtype(MYSQL,CSV,MYSQLINS,ORACLEINS,FORM,SEARCH).

charset=charactersetnameofthetargetdatabase.

ncharset=nationalcharactersetnameofthetargetdatabase.

parfile=readcommandoptionfromparameterfile

forfieldandrecord,youcanuse'0x'tospecifyhexcharactercode,

\r=0x0d\n=0x0a|=0x7c,=0x2c,\t=0x09,:=0x3a,#=0x23,"=0x22'=0x27


[root@localhostexport_xdr]#cd/usr/lib/oracle/11.2/client64/lib/

[root@localhostlib]#ls

glogin.sqllibclntsh.so.10.1libnnz11.solibocci.so.11.1libocijdbc11.solibsqlplus.soojdbc6.jarxstreams.jar

libclntsh.solibclntsh.so.11.1libocci.solibociei.solibsqlplusic.soojdbc5.jarottclasses.zip

[root@localhostlib]#ls-l

total185012

-rw-r--r--1rootroot368Sep172011glogin.sql

lrwxrwxrwx1rootroot17Jan2617:08libclntsh.so->libclntsh.so.11.1

lrwxrwxrwx1rootroot12Jan2617:31libclntsh.so.10.1->libclntsh.so

-rw-r--r--1rootroot52761218Sep172011libclntsh.so.11.1

-rw-r--r--1rootroot7955322Sep172011libnnz11.so

lrwxrwxrwx1rootroot15Jan2617:08libocci.so->libocci.so.11.1

[root@localhostexport_xdr]#history|grepln

94find/-namelibclntsh.so.10.1

95find/-namelibclntsh.so

116find/-namelibclntsh.so

127lnlibclntsh.so.10.1libocci.so

128lnlibocci.solibclntsh.so.10.1

130rmlibclntsh.so.10.1-f

132lnlibclntsh.solibclntsh.so.10.1

134rmlibclntsh.so.10.1-f

135lnlibclntsh.so.10.1libclntsh.so



./sqluldr2_linux64_10204.binuser=unxx/密码@192.168.x.x:1521/unxxquery="select/*+parallel(2)*/STARTTIME,ENDTIME,phone,imei,rantype,HCITYfromv_ps_xxxdt,mv_terminalccwhereendtime_par>=trunc(sysdate)-1andendtime_par<trunc(sysdate)-1+1/24anddt.TACID=cc.TACID(+)"head=yesfield=0x09text=txtfile='/BigData/export_xdr/exportting.txt.tmp';



补充:

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

比如:

[root@FCJ-2F-21~]#./sqluldr2_linux64_10204.bin

./sqluldr2_linux64_10204.bin:errorwhileloadingsharedlibraries:libclntsh.so.10.1:cannotopensharedobjectfile:Nosuchfileordirectory

[root@FCJ-2F-21~]#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

[oracle@FCJ-2F-21lib]$more/etc/profile

#/etc/profile

#Systemwideenvironmentandstartupprograms,forloginsetup

#Functionsandaliasesgoin/etc/bashrc

pathmunge(){

if!echo$PATH|/bin/egrep-q"(^|:)$1($|:)";then

if["$2"="after"];then

PATH=$PATH:$1

else

PATH=$1:$PATH

fi

fi

}

#kshworkaround

if[-z"$EUID"-a-x/usr/bin/id];then

EUID=`id-u`

UID=`id-ru`

fi

#Pathmanipulation

if["$EUID"="0"];then

pathmunge/sbin

pathmunge/usr/sbin

pathmunge/usr/local/sbin

fi

#Nocorefilesbydefault

ulimit-S-c0>/dev/null2>&1

if[-x/usr/bin/id];then

USER="`id-un`"

LOGNAME=$USER

MAIL="/var/spool/mail/$USER"

fi

HOSTNAME=`/bin/hostname`

HISTSIZE=1000

if[-z"$INPUTRC"-a!-f"$HOME/.inputrc"];then

INPUTRC=/etc/inputrc

fi

exportPATHUSERLOGNAMEMAILHOSTNAMEHISTSIZEINPUTRC

#Bydefault,wewantumasktogetset.Thissetsitforloginshell

#Currentthresholdforsystemreserveduid/gidsis200

#Youcouldcheckuidgidreservationvalidityin

#/usr/share/doc/setup-*/uidgidfile

if[$UID-gt99]&&["`id-gn`"="`id-un`"];then

umask002

else

umask022

fi

foriin/etc/profile.d/*.sh;do

if[-r"$i"];then

if["${-#*i}"!="$-"];then

.$i

else

.$i>/dev/null2>&1

fi

fi

done

unseti

unsetpathmunge

exportLANG=en_US.UTF-8

exportORACLE_HOME=/u01/app/oracle/product/11.2.0/dbhome_1

exportLD_LIBRARY_PATH=$ORACLE_HOME/lib:$LD_LIBRARY_PATH

exportTNS_ADMIN=/usr/lib/oracle/11.1/client64/

exportPATH=$PATH:$ORACLE_HOME:$ORACLE_HOME/bin



2.source /etc/profile

成功。

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

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

#cat/etc/ld.so.conf

includeld.so.conf.d/*.conf

#echo"/usr/local/lib">>/etc/ld.so.conf

#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/hh@tiod 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/jms@tiod 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是否有数据没有导入

“ORACLE怎么进行导入导出数据”的内容就介绍到这里了,感谢大家的阅读。如果想了解更多行业相关的知识可以关注亿速云网站,小编将为大家输出更多高质量的实用文章!