Oracle SqlLoader 用法
2012-12-08 09:09
1026 查看
Oracle sqlloader 是oracle提供的一个从外部文件导入数据到oracle数据库的工具,它支持多种文件格式(txt,csv), 可选择性的导入(文件的那些部分被导入),甚至可以并发性的导入一个或多个文件到一个或多个表
1. sqlloader 基本参数
用法: SQLLDR keyword=value [,keyword=value,...]
有效的关键字:
userid -- ORACLE 用户名/口令
control -- 控制文件名
log -- 日志文件名
bad -- 错误文件名
data -- 数据文件名
discard -- 废弃文件名
discardmax -- 允许废弃的文件的数目 (全部默认)
skip -- 要跳过的逻辑记录的数目 (默认 0)
load -- 要加载的逻辑记录的数目 (全部默认)
errors -- 允许的错误的数目 (默认 50)
rows -- 常规路径绑定数组中或直接路径保存数据间的行数(默认: 常规路径 64, 所有直接路径)
bindsize -- 常规路径绑定数组的大小 (以字节计) (默认 256000)
silent -- 运行过程中隐藏消息 (标题,反馈,错误,废弃,分区)
direct -- 使用直接路径 (默认 FALSE)
parfile -- 参数文件: 包含参数说明的文件的名称
parallel -- 执行并行加载 (默认 FALSE)
file -- 要从以下对象中分配区的文件
2. 基本用法
sqlldr userid=scott/scott@oracle control=ctl/upload.ctl data=data/upload.txt bad=bad/upload.%date%.bad discard=discard/upload.%date%.discard log=log/upload.%date%.log
注意,这里允许的最大的错误行数默认是50
默认跳过的行数是0,如果你有文件头或列名标识,请跳过这些行skip=n
性能参数
a.) direct=true 直接插入oracle数据文件,跳过SGA, 如果导入表有主键,可能导致主键unsafe, 对于cluseted table不适用。$ORACLE_HOME/rdbms/admin/catldr.sql需要可执行
b.)关闭目标表上所有索引及约束
c.) rows=128指定数据提交到数据库的行数,与 bindsize=512000相关,更少次数的提交可以提供更好的性能
d.)parallel=true 依赖于 direct=true,使并发导入。
e.)大文件分割小文件,使用append模式追加到同一表,并使用外部多线程程序调用slqloader
f.)提供fixed length数据而不是分割符类数据,可以减少数据解析时间
g.)关闭数据库归档,alter table mytable nologging.
f.)关闭数据库redo日志 sqlldr usid=xx unrecoverable data=xxx
注意问题 (Keyword: single-byte, mutiple-byte, Character/Byte Semantic CHAR/NCHAR/VARCHAR/VARCHAR2/NVARCHAR2)
数据文件的导入有两种一种按位置分割(只能按字节,不能按字符,在多语言的时候,输入文件应该按字节计算好位置,否则倒入的位置会不正确(UTF8 格式文件,一个汉字2个字节,UltraEdit打开显示字节长度,notepad++显示字符长度)),另外就是按分割符(列中的内容不能包含该分割符)
关于字段长度的问题CHAR/NCHAR 最大2000字节,VARCHAR 是 VARCHAR2的同义词 VARCHAR2/NVACHAR2 最大4000字节 , N 表示以字符的方式存储
在DB设置为UTF8时 select * from nls_database_parameters
VARCHAR2(1) => 只能插入一个字节,不能插入汉字
VARCHAR2(2) => DB设置为GBK,能插入一个汉字 (一个汉子两个字字节)
VARCHAR2(3) => 能插入一个汉字 (UTF8 , 默认一个汉字站3个字节)
VARCHAR2(1 CHAR) => 能存入一个汉字 这种情况下 等同 NVARCHAR(1)
VARCHAR2(4000 CHAR) => 最多能存入 1333 汉字, 因为 他最多正能存4000 byte,
另外 可以使用LENGTHB and LENGTH 和 SUBSTRB and SUBSTR 求字节/字符长度,和字节/字符的substr.
按分割符方式
LOAD DATA
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
INFILE'E:\test\data.tmp'
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
BADFILE'E:\test\data.bad'
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
DISCARDFILE'E:\test\data.dsc'
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
DISCARDMAX1000
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
APPEND|INSERT|(REPLACE/TRUNCATE)
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
INTOTABLE "TB_TEST"
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
FIELDS TERMINATEDBY
'|'
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
TRAILING NULLCOLS
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
(
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
USER_ID,
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
USER_NAME,
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
REG_TIME
DATE(20) "YYYY-MM-DD HH24:MI:SS"
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
)
按位置方式
LOAD DATA
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
INFILE'E:\test\data.tmp'
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
BADFILE'E:\test\data.bad'
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
DISCARDFILE'E:\test\data.dsc'
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
DISCARDMAX1000
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
APPEND
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
INTOTABLE "TB_TEST"
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
TRAILING NULLCOLS
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
(
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
USER_NAME POSITION(1,3)
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
)
1. sqlloader 基本参数
用法: SQLLDR keyword=value [,keyword=value,...]
有效的关键字:
userid -- ORACLE 用户名/口令
control -- 控制文件名
log -- 日志文件名
bad -- 错误文件名
data -- 数据文件名
discard -- 废弃文件名
discardmax -- 允许废弃的文件的数目 (全部默认)
skip -- 要跳过的逻辑记录的数目 (默认 0)
load -- 要加载的逻辑记录的数目 (全部默认)
errors -- 允许的错误的数目 (默认 50)
rows -- 常规路径绑定数组中或直接路径保存数据间的行数(默认: 常规路径 64, 所有直接路径)
bindsize -- 常规路径绑定数组的大小 (以字节计) (默认 256000)
silent -- 运行过程中隐藏消息 (标题,反馈,错误,废弃,分区)
direct -- 使用直接路径 (默认 FALSE)
parfile -- 参数文件: 包含参数说明的文件的名称
parallel -- 执行并行加载 (默认 FALSE)
file -- 要从以下对象中分配区的文件
2. 基本用法
sqlldr userid=scott/scott@oracle control=ctl/upload.ctl data=data/upload.txt bad=bad/upload.%date%.bad discard=discard/upload.%date%.discard log=log/upload.%date%.log
注意,这里允许的最大的错误行数默认是50
默认跳过的行数是0,如果你有文件头或列名标识,请跳过这些行skip=n
性能参数
a.) direct=true 直接插入oracle数据文件,跳过SGA, 如果导入表有主键,可能导致主键unsafe, 对于cluseted table不适用。$ORACLE_HOME/rdbms/admin/catldr.sql需要可执行
b.)关闭目标表上所有索引及约束
c.) rows=128指定数据提交到数据库的行数,与 bindsize=512000相关,更少次数的提交可以提供更好的性能
d.)parallel=true 依赖于 direct=true,使并发导入。
e.)大文件分割小文件,使用append模式追加到同一表,并使用外部多线程程序调用slqloader
f.)提供fixed length数据而不是分割符类数据,可以减少数据解析时间
g.)关闭数据库归档,alter table mytable nologging.
f.)关闭数据库redo日志 sqlldr usid=xx unrecoverable data=xxx
注意问题 (Keyword: single-byte, mutiple-byte, Character/Byte Semantic CHAR/NCHAR/VARCHAR/VARCHAR2/NVARCHAR2)
数据文件的导入有两种一种按位置分割(只能按字节,不能按字符,在多语言的时候,输入文件应该按字节计算好位置,否则倒入的位置会不正确(UTF8 格式文件,一个汉字2个字节,UltraEdit打开显示字节长度,notepad++显示字符长度)),另外就是按分割符(列中的内容不能包含该分割符)
关于字段长度的问题CHAR/NCHAR 最大2000字节,VARCHAR 是 VARCHAR2的同义词 VARCHAR2/NVACHAR2 最大4000字节 , N 表示以字符的方式存储
在DB设置为UTF8时 select * from nls_database_parameters
VARCHAR2(1) => 只能插入一个字节,不能插入汉字
VARCHAR2(2) => DB设置为GBK,能插入一个汉字 (一个汉子两个字字节)
VARCHAR2(3) => 能插入一个汉字 (UTF8 , 默认一个汉字站3个字节)
VARCHAR2(1 CHAR) => 能存入一个汉字 这种情况下 等同 NVARCHAR(1)
VARCHAR2(4000 CHAR) => 最多能存入 1333 汉字, 因为 他最多正能存4000 byte,
另外 可以使用LENGTHB and LENGTH 和 SUBSTRB and SUBSTR 求字节/字符长度,和字节/字符的substr.
按分割符方式
LOAD DATA
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
INFILE'E:\test\data.tmp'
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
BADFILE'E:\test\data.bad'
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
DISCARDFILE'E:\test\data.dsc'
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
DISCARDMAX1000
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
APPEND|INSERT|(REPLACE/TRUNCATE)
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
INTOTABLE "TB_TEST"
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
FIELDS TERMINATEDBY
'|'
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
TRAILING NULLCOLS
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
(
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
USER_ID,
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
USER_NAME,
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
REG_TIME
DATE(20) "YYYY-MM-DD HH24:MI:SS"
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
)
按位置方式
LOAD DATA
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
INFILE'E:\test\data.tmp'
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
BADFILE'E:\test\data.bad'
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
DISCARDFILE'E:\test\data.dsc'
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
DISCARDMAX1000
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
APPEND
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
INTOTABLE "TB_TEST"
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
TRAILING NULLCOLS
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
(
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
USER_NAME POSITION(1,3)
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
)
相关文章推荐
- oracle递归用法
- Oracle物化视图的用法与总结
- Oracle 查询类似 select top 的用法
- Oracle中ltrim的用法
- Oracle to_char的用法
- Oracle中的外连接用法
- [每日一题] OCP1z0-047 :2013-07-13 oracle 10g正则表达式 REGEXP_LIKE 用法.....................................2
- oracle系统包——dbms_job用法(oracle定时任务)
- 常见Oracle HINT的用法
- oracle中 all any in的用法
- Oracle的Package的作用及用法
- Oracle Connect By Prior用法(实现递归查询)
- Oracle高级篇之start with关键字的用法
- 关于oracle with as用法
- Oracle DBMS_STATS 用法例子
- 【sql】oracle 数据库instr函数的用法详解
- Oracle之唯一性约束(UNIQUEConstraint)用法详解
- oracle大数据量导入(sqlloader)
- oracle Constraint[类似 constraint用法总结 I]
- Oracle中“HINT”的30个用法