ORACLE怎么进行导入导出数据
本篇内容介绍了“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怎么进行导入导出数据”的内容就介绍到这里了,感谢大家的阅读。如果想了解更多行业相关的知识可以关注亿速云网站,小编将为大家输出更多高质量的实用文章!
声明:本站所有文章资源内容,如无特殊说明或标注,均为采集网络资源。如若本站内容侵犯了原著者的合法权益,可联系本站删除。