SQL*Loader是Oracle数据库导进外部数据的一个东西。它和DB2的Load东西类似,但有更多的抉择,它撑持改变的加载形式,可选的加载及多表加载。 若何利用 SQL*Loader 东西 我们能够用Oracle的sqlldr东西来导进数据。
例如: sqlldr scott/tiger control=loader。ctl 掌握文件(loader。ctl) 将加载一个外部数据文件(含分隔符)loader。ctl如下: load data infile 'c:\data\mydata。
csv' into table emp fields terminated by "," optionally enclosed by '"' ( empno, empname, sal, deptno )mydata。csv 如下: 10001,"Scott Tiger", 1000, 40 10002,"Frank Naude", 500, 20下面是一个指定笔录长度的示例掌握文件。
"*" 代表数据文件与此文件同名,即在后面利用BEGINDATA段来标识数据。 load data infile * replace into table departments ( dept position (02:05) char
(4), deptname position (08:27) char(20) ) begindata COSC COMPUTER SCIENCE ENGL ENGLISH LITERATURE MATH MATHEMATICS POLY POLITICAL SCIENCEUnloader如许的东西 Oracle 没有供给将数据导出到一个文件的东西。
但是,我们能够用SQL*Plus的select 及 format 数据来输出到一个文件: set echo off newpage 0 space 0 pagesize 0 feed off head off trimspool on spool oradata。
txt select col1 || ',' || col2 || ',' || col3 from tab1 where col2 = 'XYZ'; spool off别的,也能够利用利用 UTL_FILE PL/SQL 包处置: rem Remember to update initSID。
ora, utl_file_dir='c:\oradata' parameter declare fp utl_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 ,TOAD for Quest等。 加载可变长度或指定长度的笔录: LOAD DATA INFILE * INTO TABLE load_delimited_data FIELDS TERMINATED BY "," OPTIONALLY ENCLOSED BY '"' TRAILING NULLCOLS ( data1, data2 ) BEGINDATA 11111,AAAAAAAAAA 22222,"A,B,C,D," 下面是导进固定位置(固定长度)数据示例: LOAD DATA INFILE * INTO TABLE load_positional_data ( data1 POSITION(1:5), data2 POSITION(6:15) ) BEGINDATA 11111AAAAAAAAAA 22222BBBBBBBBBB跳过数据行,能够用 “SKIP n”关键字来指定导进时能够跳过几行数据。
如: LOAD DATA INFILE * INTO TABLE load_positional_data SKIP 5 ( data1 POSITION(1:5), data2 POSITION(6:15) )BEGINDATA 11111AAAAAAAAAA 22222BBBBBBBBBB。