LOAD DATA
INFILE 't.dat' // 要导入的文件
// INFILE 'tt.date' // 导入多个文件
// INFILE * // 要导入的内容就在control文件里 下面的BEGINDATA后面就是导入的内容
INTO TABLE table_name // 指定装入的表
BADFILE 'c:\bad.txt' // 指定坏文裤敬胡件地址
************* 以下是4种装入表的方式
APPEND // 原先的表有数据 就加在后面
// INSERT // 装载空表 如果原先的表有数据 sqlloader会停止 默认值
// REPLACE // 原先的表有数据 原先的数据会全部删除
// TRUNCATE // 指定的内容和replace的相同 会用truncate语句删除现存数据
************* 指定的TERMINATED可以在表的开头 也可在表的内部字段部分
FIELDS TERMINATED BY ',' OPTIONALLY ENCLOSED BY '"'
// 装载这种数据: 10,lg,"""lg""","lg,lg"
// 在表中结果: 10 lg "lg" lg,lg
// TERMINATED BY X '09' // 以十六进制格式 '09' 表示的
// TERMINATED BY WRITESPACE // 装载这种数据: 10 lg lg
TRAILING NULLCOLS ************* 表的字段没有对应的值时允许为空
************* 下面是表的字段
(
col_1 , col_2 ,col_filler FILLER // FILLER 关键字 此列的数值不会被装载
// 如: lg,lg,not 结果 lg lg
)
// 当没声明FIELDS TERMINATED BY ',' 时
// (
// col_1 [interger external] TERMINATED BY ',' ,
// col_2 [date "dd-mon-yyy"] TERMINATED BY ',' ,
// col_3 [char] TERMINATED BY ',' OPTIONALLY ENCLOSED BY 'lg'
// )
// 当没声明FIELDS TERMINATED BY ','用位置告诉字段装载数据
// (
稿茄 // col_1 position(1:2),
// col_2 position(3:10),
// col_3 position(*:16), // 这个字段的开始位置在前一字段的结束位置
// col_4 position(1:16),
// col_5 position(3:10) char(8) // 指定字段的类型
// )
BEGINDATA //胡拦 对应开始的 INFILE * 要导入的内容就在control文件里
10,Sql,what
20,lg,show
=====================================================================================
//////////// 注意begindata后的数值前面不能有空格
1 ***** 普通装载
LOAD DATA
INFILE *
INTO TABLE DEPT
REPLACE
FIELDS TERMINATED BY ',' OPTIONALLY ENCLOSED BY '"'
(DEPTNO,
DNAME,
LOC
)
BEGINDATA
10,Sales,"""USA"""
20,Accounting,"Virginia,USA"
30,Consulting,Virginia
40,Finance,Virginia
50,"Finance","",Virginia // loc 列将为空
60,"Finance",,Virginia // loc 列将为空
2 ***** FIELDS TERMINATED BY WHITESPACE 和 FIELDS TERMINATED BY x'09' 的情况
LOAD DATA
INFILE *
INTO TABLE DEPT
REPLACE
FIELDS TERMINATED BY WHITESPACE
-- FIELDS TERMINATED BY x'09'
(DEPTNO,
DNAME,
LOC
)
BEGINDATA
10 Sales Virginia
3 ***** 指定不装载那一列
LOAD DATA
INFILE *
INTO TABLE DEPT
REPLACE
FIELDS TERMINATED BY ',' OPTIONALLY ENCLOSED BY '"'
( DEPTNO,
FILLER_1 FILLER, // 下面的 "Something Not To Be Loaded" 将不会被装载
DNAME,
LOC
)
BEGINDATA
20,Something Not To Be Loaded,Accounting,"Virginia,USA"
4 ***** position的列子
LOAD DATA
INFILE *
INTO TABLE DEPT
REPLACE
( DEPTNO position(1:2),
DNAME position(*:16), // 这个字段的开始位置在前一字段的结束位置
LOC position(*:29),
ENTIRE_LINE position(1:29)
)
BEGINDATA
10Accounting Virginia,USA
5 ***** 使用函数 日期的一种表达 TRAILING NULLCOLS的使用
LOAD DATA
INFILE *
INTO TABLE DEPT
REPLACE
FIELDS TERMINATED BY ','
TRAILING NULLCOLS // 其实下面的ENTIRE_LINE在BEGINDATA后面的数据中是没有直接对应
// 的列的值的 如果第一行改为 10,Sales,Virginia,1/5/2000,, 就不用TRAILING NULLCOLS了
(DEPTNO,
DNAME "upper(:dname)", // 使用函数
LOC "upper(:loc)",
LAST_UPDATED date 'dd/mm/yyyy', // 日期的一种表达方式 还有'dd-mon-yyyy' 等
ENTIRE_LINE ":deptno:dname:loc:last_updated"
)
BEGINDATA
10,Sales,Virginia,1/5/2000
20,Accounting,Virginia,21/6/1999
30,Consulting,Virginia,5/1/2000
40,Finance,Virginia,15/3/2001
6 ***** 使用自定义的函数 // 解决的时间问题
create or replace
function my_to_date( p_string in varchar2 ) return date
as
type fmtArray is table of varchar2(25)
看看参考下!
输入sqlldr 后面不接任何参数 将显示所有的命令行参数的简单描述及其默认值(当你忘记某些乱亏参数时 也可以通过这个方式快速查询)
[plain]
Valid Keywords:
userid ORACLE username/password
control control file name
log log file name
bad bad file name
仔陪橡data data file name
discard discard file name
discardmax number of discards to allow (Default all)
skip number of logical records to skip (Default )
load number of logical records to load (Default all)
errors number of errors to allow (Default )
rows number of rows in conventional path bind array or beeen direct path data saves
(Default: Conventional path Direct path all)
bindsize size of conventional path bind array in bytes (Default )
silent suppress messages during run (header feedback errors discards partitions)
direct use direct path (Default FALSE)
parfile parameter file: name of file that contains parameter specifications
parallel do parallel load (Default FALSE)
file file to allocate extents from
skip_unusable_indexes disallow/allow unusable indexes or index partitions (Default FALSE)
skip_index_maintenance do not maintain indexes mark affected indexes as unusable (Default FALSE)
mit_discontinued mit loaded rows when load is discontinued (Default FALSE)
readsize size of read buffer (Default )
external_table use external table for loadNOT_USED GENERATE_ONLY EXECUTE (Default NOT_USED)
columnarrayrows number of rows for direct path column array (Default )
streamsize size of direct path stream buffer in bytes (Default )
念旁multithreading use multithreading in direct path
resumable enable or disable resumable for current session (Default FALSE)
resumable_name text string to help identify resumable statement
resumable_timeout wait time (in seconds) for RESUMABLE (Default )
date_cache size (in entries) of date conversion cache (Default )
no_index_errors abort load on any index errors (Default FALSE)
为了不用每次都在命令行中输入同样的参数 你也可以使用参数文件或把参数写在控制文件的OPTIONS字句里 当然命令行参数的优先级最高 可以覆盖参数文件和控制文件里的参数配置
SQL*Loader默认是导入到本地数据库 但也支持导入到远程数据库 只要在username后面加上 @远程数据库连接字符串 即可 如下所示
>sqlldr CONTROL=ulcase ctl
Username: scott@inst
Password: password
下面是命令行参数的具体解释
BAD 坏文件名 ( bad)
CONTROL 控制文件名 ( ctl)
DATA 数据文件名( dat) 等同于控制文件里的INFILE 可以指定多个数据文件
DIRECT true表示使用直接路径加载 false表示使用传统路径加载
DISCARD 丢失文件名( dsc)
DISCARDMAC 最多允许多少条记录可以被丢失 如果超过该数字 将停止加载
ERRORS 最多预习多少条记录insert失败 如果超过该数字 将停止加载
EXTERNAL_TABLE 是否使用外部表加载方式
FILE 该参数只在直接路径并行加载时有用
LOAD 最多允许多少条记录可以被加载
LOG 日志文件名( log)
PARALLEL true or false 直接路径加载是否使用并行模式
PARFILE 参数文件名( par)
ROWS 指定达到多少条记录时提交
SKIP 指定忽略最开始的多少条记录
lishixinzhi/Article/program/Oracle/201311/17310
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)