SQLServer輔導(dǎo):SQLLDR的使用方法

字號(hào):

用于將格式化的文本數(shù)據(jù)上載到表中去
    以表emp為例
    首先編寫一個(gè)控制命令的腳本文件,通常以ctl結(jié)尾,內(nèi)容如下:
    emp.ctl
    load data
    append
    into table emp
    fields terminated by ''
    (
    no float external,
    name char(20),
    age integer external,
    duty char(1),
    salary float external,
    upd_ts date(14) 'YYYYMMDDHH24MISS'
    )
    括號(hào)里對(duì)數(shù)據(jù)文件里每個(gè)數(shù)據(jù)域進(jìn)行解釋,以此在上載時(shí)與目標(biāo)表進(jìn)行比對(duì)。
    除了append外,還有insert、replace、truncate等方式,與append大同小異,不作更多的解釋。
    再將上載數(shù)據(jù)組織成數(shù)據(jù)文件,通常以dat結(jié)尾,內(nèi)容如下:
    emp.dat
    100000000001Tom000020100000000500020020101000000
    100000000002Jerry000025200000000800020020101235959
    分隔符要與ctl文件中fields terminated by指定的一致,這個(gè)例子中為""
    ctl和dat文件就緒后可以執(zhí)行上載,命令為:
    sqlldr dbuser/oracle control=emp.ctl data=emp.dat
    也可以將dat文件合并在ctl文件中,ctl文件改寫為:
    emp2.ctl
    load data
    infile *
    append
    into table emp
    fields terminated by ''
    (
    no float external,
    name char(20),
    age integer external,
    duty char(1),
    salary float external,
    upd_ts date(14) 'YYYYMMDDHH24MISS'
    )
    begindata
    100000000003Mulder000020100000000500020020101000000
    100000000004Scully000025200000000800020020101235959
    控制文件中infile選項(xiàng)跟sqlldr命令行中data選項(xiàng)含義相同,如使用infile  *則表明數(shù)據(jù)在本控制文件以begin  data開(kāi)頭的區(qū)域內(nèi)。
    這樣命令變成:
    sqlldr dbuser/oracle control=emp2.ctl
    conventional path
    通過(guò)常規(guī)通道方式上載。
    rows:每次提交的記錄數(shù)
    bindsize:每次提交記錄的緩沖區(qū)
    readsize:與bindsize成對(duì)使用,其中較小者會(huì)自動(dòng)調(diào)整到較大者
    sqlldr先計(jì)算單條記錄長(zhǎng)度,乘以rows,如小于bindsize,不會(huì)試圖擴(kuò)張rows以填充bindsize;如超出,則以bindsize為準(zhǔn)。
    命令為:
    sqlldr dbuser/oracle control=emp.ctl log=emp.log rows=10000 bindsize=8192000
    direct path
    通過(guò)直通方式上載,不進(jìn)行SQL解析。
    命令為:
    sqlldr dbuser/oracle control=emp.ctl log=emp.log direct=true
    例如:
    sqlldr userid=%s control=%s log=%s readsize=6553600 bindsize=6553600 rows=5000 silent=header,feedback direct = true