oraclesqlloader全攻略parti 一:sqlloader的特点oracle自己带了很多的工具可以用来进行数据的迁移、备份和恢复等工作。但是每个工具都有自己的特点。比如说exp和imp可以对数据库中的数据进行导出和导出的工作,是一种很好的数据库备份和恢复的工具,因此主要用在数据库的热备份和恢复方面。有着速度快,使用简单,快捷的优点;同时也有一些缺点,比如在不同版本数据库之间的导出、导入的过程之中,总会出现这样或者那样的问
题
快递公司问题件快递公司问题件货款处理关于圆的周长面积重点题型关于解方程组的题及答案关于南海问题
,这个也许是oracle公司自己产品的兼容性的问题吧。sqlloader工具却没有这方面的问题,它可以把一些以文本格式存放的数据顺利的导入到oracle数据库中,是一种在不同数据库之间进行数据迁移的非常方便而且通用的工具。缺点就速度比较慢,另外对blob等类型的数据就有点麻烦了。二:sqlloader的帮助C:\>sqlldrSQL*Loader:Release9.2.0.1.0-Productionon星期六10月914:48:122004Copyright(c)1982,2002,OracleCorporation.Allrightsreserved.用法:SQLLDRkeyword=value[,keyword=value,...]有效的关键字:userid--ORACLEusername/passwordcontrol--Controlfilenamelog--Logfilenamebad--Badfilenamedata--Datafilenamediscard--Discardfilenamediscardmax--Numberofdiscardstoallow(全部默认)skip--Numberoflogicalrecordstoskip(默认0)load--Numberoflogicalrecordstoload(全部默认)errors--Numberoferrorstoallow(默认50)rows--Numberofrowsinconventionalpathbindarrayorbetweendirectpathdatasaves(默认:常规路径64,所有直接路径)bindsize--Sizeofconventionalpathbindarrayinbytes(默认256000)silent--Suppressmessagesduringrun(header,feedback,errors,discards,partitions)direct--usedirectpath(默认FALSE)parfile--parameterfile:nameoffilethatcontainsparameterspecificationsparallel--doparallelload(默认FALSE)file--Filetoallocateextentsfromskip_unusable_indexes--disallow/allowunusableindexesorindexpartitions(默认FALSE)skip_index_maintenance--donotmaintainindexes,markaffectedindexesasunusable(默认FALSE)readsize--SizeofReadbuffer(默认1048576)external_table--useexternaltableforload;NOT_USED,GENERATE_ONLY,EXECUTE(默认NOT_USED)columnarrayrows--Numberofrowsfordirectpathcolumnarray(默认5000)streamsize--Sizeofdirectpathstreambufferinbytes(默认256000)multithreading--usemultithreadingindirectpathresumable--enableordisableresumableforcurrentsession(默认FALSE)resumable_name--textstringtohelpidentifyresumablestatementresumable_timeout--waittime(inseconds)forRESUMABLE(默认7200)date_cache--size(inentries)ofdateconversioncache(默认1000)PLEASENOTE:命令行参数可以由位置或关键字指定。前者的例子是'sqlloadscott/tigerfoo';后一种情况的一个示例是'sqlldrcontrol=foouserid=scott/tiger'.位置指定参数的时间必须早于但不可迟于由关键字指定的参数。例如,允许'sqlldrscott/tigercontrol=foologfile=log',但是不允许'sqlldrscott/tigercontrol=foolog',即使参数'log'的位置正确。C:\>三:sqlloader使用例子a)SQLLoader将Excel数据导出到Oracle1.创建SQL*Loader输入数据所需要的文件,均保存到C:\,用记事本编辑:控制文件:input.ctl,内容如下: loaddata --1、控制文件标识 infile'test.txt' --2、要输入的数据文件名为test.txt appendintotabletest --3、向
表
关于同志近三年现实表现材料材料类招标技术评分表图表与交易pdf视力表打印pdf用图表说话 pdf
test中追加记录 fieldsterminatedbyX'09' --4、字段终止于X'09',是一个制表符(TAB) (id,username,password,sj) -----定义列对应顺序a、insert,为缺省方式,在数据装载开始时要求表为空b、append,在表中追加新记录c、replace,删除旧记录,替换成新装载的记录d、truncate,同上在DOS窗口下使用SQL*Loader命令实现数据的输入C:\>sqlldruserid=system/managercontrol=input.ctl默认日志文件名为:input.log默认坏记录文件为:input.bad2.还有一种
方法
快递客服问题件处理详细方法山木方法pdf计算方法pdf华与华方法下载八字理论方法下载
可以把EXCEL文件另存为CSV(逗号分隔)(*.csv),控制文件就改为用逗号分隔LOADDATAINFILE'd:\car.csv'APPENDINTOTABLEt_car_tempFIELDSTERMINATEDBY","(phoneno,vip_car)b)在控制文件中直接导入数据1、控制文件test.ctl的内容--TheformatforexecutingthisfilewithSQLLoaderis:--SQLLDRcontrol=
Besuretosubstituteyour--versionofSQLLOADERandthefilenameforthisfile.LOADDATAINFILE*BADFILE'C:\DocumentsandSettings\Jackey\桌面\WMCOUNTRY.BAD'DISCARDFILE'C:\DocumentsandSettings\Jackey\桌面\WMCOUNTRY.DSC'INSERTINTOTABLEEMCCOUNTRYFieldsterminatedby";"Optionallyenclosedby'"'(COUNTRYIDNULLIF(COUNTRYID="NULL"),COUNTRYCODE,COUNTRYNAME,CONTINENTIDNULLIF(CONTINENTID="NULL"),MAPIDNULLIF(MAPID="NULL"),CREATETIMEDATE"MM/DD/YYYYHH24:MI:SS"NULLIF(CREATETIME="NULL"),LASTMODIFIEDTIMEDATE"MM/DD/YYYYHH24:MI:SS"NULLIF(LASTMODIFIEDTIME="NULL"))BEGINDATA1;"JP";"Japan";1;9;"09/16/200416:31:32";NULL2;"CN";"China";1;10;"09/16/200416:31:32";NULL3;"IN";"India";1;11;"09/16/200416:31:32";NULL4;"AU";"Australia";6;12;"09/16/200416:31:32";NULL5;"CA";"Canada";4;13;"09/16/200416:31:32";NULL6;"US";"UnitedStates";4;14;"09/16/200416:31:32";NULL7;"MX";"Mexico";4;15;"09/16/200416:31:32";NULL8;"GB";"UnitedKingdom";3;16;"09/16/200416:31:32";NULL9;"DE";"Germany";3;17;"09/16/200416:31:32";NULL10;"FR";"France";3;18;"09/16/200416:31:32";NULL11;"IT";"Italy";3;19;"09/16/200416:31:32";NULL12;"ES";"Spain";3;20;"09/16/200416:31:32";NULL13;"FI";"Finland";3;21;"09/16/200416:31:32";NULL14;"SE";"Sweden";3;22;"09/16/200416:31:32";NULL15;"IE";"Ireland";3;23;"09/16/200416:31:32";NULL16;"NL";"Netherlands";3;24;"09/16/200416:31:32";NULL17;"DK";"Denmark";3;25;"09/16/200416:31:32";NULL18;"BR";"Brazil";5;85;"09/30/200411:25:43";NULL19;"KR";"Korea,Republicof";1;88;"09/30/200411:25:43";NULL20;"NZ";"NewZealand";6;89;"09/30/200411:25:43";NULL21;"BE";"Belgium";3;79;"09/30/200411:25:43";NULL22;"AT";"Austria";3;78;"09/30/200411:25:43";NULL23;"NO";"Norway";3;82;"09/30/200411:25:43";NULL24;"LU";"Luxembourg";3;81;"09/30/200411:25:43";NULL25;"PT";"Portugal";3;83;"09/30/200411:25:43";NULL26;"GR";"Greece";3;80;"09/30/200411:25:43";NULL27;"IL";"Israel";1;86;"09/30/200411:25:43";NULL28;"CH";"Switzerland";3;84;"09/30/200411:25:43";NULL29;"A1";"AnonymousProxy";0;0;"09/30/200411:25:43";NULL30;"A2";"SatelliteProvider";0;0;"09/30/200411:25:43";NULL31;"AD";"Andorra";3;0;"09/30/200411:25:43";NULL32;"AE";"UnitedArabEmirates";1;0;"09/30/200411:25:43";NULL33;"AF";"Afghanistan";1;0;"09/30/200411:25:43";NULL34;"AG";"AntiguaandBarbuda";7;0;"09/30/200411:25:43";NULL35;"AI";"Anguilla";7;0;"09/30/200411:25:43";NULL36;"AL";"Albania";3;0;"09/30/200411:25:43";NULL37;"AM";"Armenia";3;0;"09/30/200411:25:43";NULL38;"AN";"NetherlandsAntilles";3;0;"09/30/200411:25:43";NULL39;"AO";"Angola";2;0;"09/30/200411:25:43";NULL40;"AP";"Asia/PacificRegion";2;0;"09/30/200411:25:43";NULL41;"AQ";"Antarctica";8;0;"09/30/200411:25:43";NULL42;"AR";"Argentina";5;0;"09/30/200411:25:43";NULL43;"AS";"AmericanSamoa";6;0;"09/30/200411:25:43";NULL44;"AW";"Aruba";5;0;"09/30/200411:25:43";NULL45;"AZ";"Azerbaijan";1;0;"09/30/200411:25:43";NULL46;"BA";"BosniaandHerzegovina";3;0;"09/30/200411:25:43";NULL47;"BB";"Barbados";5;0;"09/30/200411:25:43";NULL48;"BD";"Bangladesh";1;0;"09/30/200411:25:43";NULL49;"BF";"BurkinaFaso";2;0;"09/30/200411:25:43";NULL50;"BG";"Bulgaria";3;0;"09/30/200411:25:43";NULL51;"BH";"Bahrain";1;0;"09/30/200411:25:43";NULL52;"BI";"Burundi";2;0;"09/30/200411:25:43";NULL53;"BJ";"Benin";2;0;"09/30/200411:25:43";NULL54;"BM";"Bermuda";4;0;"09/30/200411:25:43";NULL55;"BN";"BruneiDarussalam";1;0;"09/30/200411:25:43";NULL56;"BO";"Bolivia";5;0;"09/30/200411:25:43";NULL57;"BS";"Bahamas";7;0;"09/30/200411:25:43";NULL58;"BT";"Bhutan";1;0;"09/30/200411:25:43";NULL59;"BV";"BouvetIsland";5;0;"09/30/200411:25:43";NULL60;"BW";"Botswana";2;0;"09/30/200411:25:43";NULL61;"BY";"Belarus";3;0;"09/30/200411:25:43";NULL2、执行导入命令C:\>sqlldruserid=system/managercontrol=test.ctl partiiSQL*Loader是Oracle数据库导入外部数据的一个工具.它和DB2的Load工具相似,但有更多的选择,它支持变化的加载模式,可选的加载及多表加载. 如何使用SQL*Loader工具 我们可以用Oracle的sqlldr工具来导入数据。例如: sqlldrscott/tigercontrol=loader.ctl 控制文件(loader.ctl)将加载一个外部数据文件(含分隔符).loader.ctl如下: loaddata infile'c:\data\mydata.csv' intotableemp fieldsterminatedby","optionallyenclosedby'"' (empno,empname,sal,deptno) mydata.csv如下: 10001,"ScottTiger",1000,40 10002,"FrankNaude",500,20 下面是一个指定记录长度的示例控制文件。"*"代表数据文件与此文件同名,即在后面使用BEGINDATA段来标识数据。 loaddata infile* replace intotabledepartments (deptposition(02:05)char(4), deptnameposition(08:27)char(20) ) begindata COSCCOMPUTERSCIENCE ENGLENGLISHLITERATURE MATHMATHEMATICS POLYPOLITICALSCIENCE Unloader这样的工具 Oracle没有提供将数据导出到一个文件的工具。但是,我们可以用SQL*Plus的select及format数据来输出到一个文件: setechooffnewpage0space0pagesize0feedoffheadofftrimspoolon spooloradata.txt selectcol1||','||col2||','||col3 fromtab1 wherecol2='XYZ'; spooloff 另外,也可以使用使用UTL_FILEPL/SQL包处理: remRemembertoupdateinitSID.ora,utl_file_dir='c:\oradata'parameter declare fputl_file.file_type; begin fp:=utl_file.fopen('c:\oradata','tab1.txt','w'); utl_file.putf(fp,'%s,%s\n','TextField',55); utl_file.fclose(fp); end; / 当然你也可以使用第三方工具,如SQLWays,TOADforQuest等。 加载可变长度或指定长度的记录 如: LOADDATA INFILE* INTOTABLEload_delimited_data FIELDSTERMINATEDBY","OPTIONALLYENCLOSEDBY'"' TRAILINGNULLCOLS (data1, data2 ) BEGINDATA 11111,AAAAAAAAAA 22222,"A,B,C,D," 下面是导入固定位置(固定长度)数据示例: LOADDATA INFILE* INTOTABLEload_positional_data (data1POSITION(1:5), data2POSITION(6:15) ) BEGINDATA 11111AAAAAAAAAA 22222BBBBBBBBBB 跳过数据行: 可以用"SKIPn"关键字来指定导入时可以跳过多少行数据。如: LOADDATA INFILE* INTOTABLEload_positional_data SKIP5 (data1POSITION(1:5), data2POSITION(6:15) ) BEGINDATA 11111AAAAAAAAAA 22222BBBBBBBBBB 导入数据时修改数据: 在导入数据到数据库时,可以修改数据。注意,这仅适合于常规导入,并不适合direct导入方式.如: LOADDATA INFILE* INTOTABLEmodified_data (rec_no"my_db_sequence.nextval", regionCONSTANT'31', time_loaded"to_char(SYSDATE,'HH24:MI')", data1POSITION(1:5)":data1/100", data2POSITION(6:15)"upper(:data2)", data3POSITION(16:22)"to_date(:data3,'YYMMDD')" ) BEGINDATA 11111AAAAAAAAAA991201 22222BBBBBBBBBB990112 LOADDATA INFILE'mail_orders.txt' BADFILE'bad_orders.txt' APPEND INTOTABLEmailing_list FIELDSTERMINATEDBY"," (addr, city, state, zipcode, mailing_addr"decode(:mailing_addr,null,:addr,:mailing_addr)", mailing_city"decode(:mailing_city,null,:city,:mailing_city)", mailing_state ) 将数据导入多个表: 如: LOADDATA INFILE* REPLACE INTOTABLEemp WHENempno!='' (empnoPOSITION(1:4)INTEGEREXTERNAL, enamePOSITION(6:15)CHAR, deptnoPOSITION(17:18)CHAR, mgrPOSITION(20:23)INTEGEREXTERNAL ) INTOTABLEproj WHENprojno!='' (projnoPOSITION(25:27)INTEGEREXTERNAL, empnoPOSITION(1:4)INTEGEREXTERNAL ) 导入选定的记录: 如下例:(01)代表第一个字符,(30:37)代表30到37之间的字符: LOADDATA INFILE'mydata.dat'BADFILE'mydata.bad'DISCARDFILE'mydata.dis' APPEND INTOTABLEmy_selective_table WHEN(01)<>'H'and(01)<>'T'and(30:37)='19991217' ( regionCONSTANT'31', service_keyPOSITION(01:11)INTEGEREXTERNAL, call_b_noPOSITION(12:29)CHAR ) 导入时跳过某些字段: 可用POSTION(x:y)来分隔数据.在Oracle8i中可以通过指定FILLER字段实现。FILLER字段用来跳过、忽略导入数据文件中的字段.如: LOADDATA TRUNCATEINTOTABLET1 FIELDSTERMINATEDBY',' (field1, field2FILLER, field3 ) 导入多行记录: 可以使用下面两个选项之一来实现将多行数据导入为一个记录: CONCATENATE:-usewhenSQL*Loadershouldcombinethesamenumberofphysicalrecordstogethertoformonelogicalrecord. CONTINUEIF-useifaconditionindicatesthatmultiplerecordsshouldbetreatedasone.Eg.byhavinga'#'characterincolumn1. SQL*Loader数据的提交: 一般情况下是在导入数据文件数据后提交的。 也可以通过指定ROWS=参数来指定每次提交记录数。 提高SQL*Loader的性能: 1)一个简单而容易忽略的问题是,没有对导入的表使用任何索引和/或约束(主键)。如果这样做,甚至在使用ROWS=参数时,会很明显降低数据库导入性能。 2)可以添加DIRECT=TRUE来提高导入数据的性能。当然,在很多情况下,不能使用此参数。 3)通过指定UNRECOVERABLE选项,可以关闭数据库的日志。这个选项只能和direct一起使用。 4)可以同时运行多个导入任务. 常规导入与direct导入方式的区别: 常规导入可以通过使用INSERT语句来导入数据。Direct导入可以跳过数据库的相关逻辑(DIRECT=TRUE),而直接将数据导入到数据文件中。文章引用自:HYPERLINK"http://blog.chinaunix.net/u/25176/showart_376070.html"\t"_blank" 发表于:2007-09-07,修改于:2007-09-0709:38 已浏览5030次,有评论3条HYPERLINK"http://blog.chinaunix.net/u2/star.php?blogid=25176&artid=376070"\o"推荐这篇文章"推荐HYPERLINK"http://blog.chinaunix.net/u2/complaint.php?blogid=25176&artid=376070"\o"投诉这篇文章"投诉 网友评论 HYPERLINK"http://blog.chinaunix.net/jump/byuser.php?username=wangx1948"\o"查看wangx1948的BLOG"\t"_blank"wangx1948时间:2008-03-1717:26:16IP地址:60.191.125.★有个问题要请教一下 HYPERLINK"http://blog.chinaunix.net/jump/byuser.php?username=wangx1948"\o"查看wangx1948的BLOG"\t"_blank"wangx1948时间:2008-03-1717:28:46IP地址:60.191.125.★LZ,我在用sqlldr把文件数据导进表的时候。文件格式如下1|a|xxx2|b|xxx如果我只想把第二个字段导进表该怎么写ctl?请赐教 本站网友时间:2008-11-0923:07:54IP地址:124.126.17.★导入时跳过某些字段: 可用 POSTION(x:y) 来分隔数据. 在Oracle8i中可以通过指定 FILLER 字段实现。FILLER 字段用来跳过、忽略导入数据文件中的字段.如: LOAD DATA TRUNCATE INTO TABLE T1 FIELDS TERMINATED BY ',' ( field1, field2 FILLER, field3 )