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 SCIENCE |
Unloader这样的工具
Oracle 没有提供将数据导出到一个文件的工具。但是,我们可以用SQL*Plus的0select 及 format 数据来输出到一个文件:
set echo off newpage 0 space 0 pagesize 0
feed off head off trimspool on
spool oradata.txt
0select col1 || , || col2 || , || col3
from tab1
where col2 = XYZ .
spool off |
另外,也可以使用使用 UTL_FILE PL/SQL 包处理:
rem Remember to 0update 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 |
相关文章
计算机等级C语言上机考试改错题分析总结
浅谈QoS带宽管理在网络管理的应用情况
局域网资源共享故障分析解决
DD 网络通的工作原理及其技术特色简介
简述数据库导入OracleSQL*Loader指南
J2EE基础:Struts框架的初学者入门知识
实战经验Oracle数据库基本操作步步详解
轻松应对J 连接MySQL数据库的实例讲解
使用Java语言快速开发LinuxGUI的应用
澳大利亚华人论坛
考好网
日本华人论坛
华人移民留学论坛
英国华人论坛