Oracle sqlldr使用总结
来源:互联网 发布:淘宝上的全友是真的吗 编辑:程序博客网 时间:2024/06/06 08:49
Oracle sqlldr使用总结
先看个简单的,源文件(test.csv)内容如下:
"张三","上海市黄浦区","38"
"李四","广东省深圳市罗湖区","29"
…………
…………
上面文本文件test.csv里的内容,除了使用逗号分割以外,还使用了双引号包围。
创建控制文件test.ctl如下:
load data
infile 'test.csv'
insert into table victor.test
fields terminated by ','
optionally enclosed by '"'
(
c1,
c2,
c3
)
注意:要把文本文件test.csv的内容导入到表victor.test,但是要忽略掉文本里的双引号"",
则必须使用optionally enclosed by '"',否则双引号也会跟着导入进去。
另外,insert into table victor.test这一行中的insert可以替换为append,replace,truncate等,
说明如下:
a) insert,为缺省方式,在数据装载开始时要求表为空
b) append,在表中追加新记录
c) replace,删除旧记录,替换成新装载的记录
d) truncate,同上
导入命令:
sqlldr victor/victor control=test.ctl
如果导入之后查询表的数据发现是乱码,则请检查环境变量是否设置为zhs16gbk,如下:
export NLS_LANG=american_america.zhs16gbk
然后重新导入就不会有乱码了。
上面很容易明白,现在搞个复杂一点的。
源文件(test.csv)内容如下:
" Jackson "," 95 ","19890805"," NewYork"
" Michael "," 92 ","19900120"," Bei Jing "
" Emily "," 100 ","19891110"
" Victor "," 89 ",""," Shenzhen "
" Unkown "
""," 92 ",""," GuangZhou "
"","",""," Shanghai "
…………
…………
…………
此文本有上千万行记录,有些记录是空值,有些内容前后有空格!
文本里的空值如实导入,但空格需要去除。
准备导入到下面这个表:
SQL> desc test
名称 是否为空? 类型
----------------------------------------- -------- ----------------------------
C1 CHAR(10)
C2 NUMBER
C3 DATE
C4 VARCHAR2(15)
控制文件是test.ctl,内容如下:
options(
errors='500' ,
rows='100000' ,
bindsize='40960000' ,
readsize='40960000' ,
streamsize='40960000',
parallel='no',
direct='yes'
)
unrecoverable
load data
infile "test.csv" badfile "test.bad"
into table test
truncate
fields terminated by ','
optionally enclosed by '"'
trailing nullcols
(
c1 char(10) "trim(:c1)",
c2 "trim(:c2)",
c3 date 'yyyymmdd',
c4 char(15) "trim(:c4)"
)
对这个控制文件的几个参数的说明:
errors -- 允许的错误的数目 (默认 50) 如果不指定,达到错误上限自动停止,不会完全导入
rows -- 每次提交的记录数(默认: 常规路径 64, 所有直接路径)
bindsize -- 每次提交记录的缓冲区的大小 (以字节计) (默认 256000)
readsize -- 读取缓冲区的大小 (默认 1048576)
streamsize -- 直接路径流缓冲区的大小 (以字节计) (默认 256000)
parallel -- 执行并行加载 (默认 FALSE)
direct -- 使用直接路径 (默认 FALSE)
trailing nullcols -- 表的字段没有对应的值时允许为空
执行sqlldr装载文本:
sqlldr victor/victor control=test.ctl
查询表test进行结果验证:
SQL> select * from test where rownum<9;
C1 C2 C3 C4
---------- -------------- ---------------- ---------------
Jackson 95 1989-08-05 NewYork
Michael 92 1990-01-20 Bei Jing
Emily 100 1989-11-10
Victor 89 Shenzhen
Unkown
92 GuangZhou
Shanghai
SQL> select * from test where c1='Jackson';
C1 C2 C3 C4
---------- ---------- ---------- ---------------
Jackson 95 1989-08-05 NewYork
SQL> select * from test where c4='Bei Jing';
C1 C2 C3 C4
---------- ---------- ---------- ---------------
Michael 92 1990-01-20 Bei Jing
SQL> select * from test where c4='Shanghai';
C1 C2 C3 C4
---------- ---------- ---------- ---------------
Shanghai
以上显示导入正常!
先看个简单的,源文件(test.csv)内容如下:
"张三","上海市黄浦区","38"
"李四","广东省深圳市罗湖区","29"
…………
…………
上面文本文件test.csv里的内容,除了使用逗号分割以外,还使用了双引号包围。
创建控制文件test.ctl如下:
load data
infile 'test.csv'
insert into table victor.test
fields terminated by ','
optionally enclosed by '"'
(
c1,
c2,
c3
)
注意:要把文本文件test.csv的内容导入到表victor.test,但是要忽略掉文本里的双引号"",
则必须使用optionally enclosed by '"',否则双引号也会跟着导入进去。
另外,insert into table victor.test这一行中的insert可以替换为append,replace,truncate等,
说明如下:
a) insert,为缺省方式,在数据装载开始时要求表为空
b) append,在表中追加新记录
c) replace,删除旧记录,替换成新装载的记录
d) truncate,同上
导入命令:
sqlldr victor/victor control=test.ctl
如果导入之后查询表的数据发现是乱码,则请检查环境变量是否设置为zhs16gbk,如下:
export NLS_LANG=american_america.zhs16gbk
然后重新导入就不会有乱码了。
上面很容易明白,现在搞个复杂一点的。
源文件(test.csv)内容如下:
" Jackson "," 95 ","19890805"," NewYork"
" Michael "," 92 ","19900120"," Bei Jing "
" Emily "," 100 ","19891110"
" Victor "," 89 ",""," Shenzhen "
" Unkown "
""," 92 ",""," GuangZhou "
"","",""," Shanghai "
…………
…………
…………
此文本有上千万行记录,有些记录是空值,有些内容前后有空格!
文本里的空值如实导入,但空格需要去除。
准备导入到下面这个表:
SQL> desc test
名称 是否为空? 类型
----------------------------------------- -------- ----------------------------
C1 CHAR(10)
C2 NUMBER
C3 DATE
C4 VARCHAR2(15)
控制文件是test.ctl,内容如下:
options(
errors='500' ,
rows='100000' ,
bindsize='40960000' ,
readsize='40960000' ,
streamsize='40960000',
parallel='no',
direct='yes'
)
unrecoverable
load data
infile "test.csv" badfile "test.bad"
into table test
truncate
fields terminated by ','
optionally enclosed by '"'
trailing nullcols
(
c1 char(10) "trim(:c1)",
c2 "trim(:c2)",
c3 date 'yyyymmdd',
c4 char(15) "trim(:c4)"
)
对这个控制文件的几个参数的说明:
errors -- 允许的错误的数目 (默认 50) 如果不指定,达到错误上限自动停止,不会完全导入
rows -- 每次提交的记录数(默认: 常规路径 64, 所有直接路径)
bindsize -- 每次提交记录的缓冲区的大小 (以字节计) (默认 256000)
readsize -- 读取缓冲区的大小 (默认 1048576)
streamsize -- 直接路径流缓冲区的大小 (以字节计) (默认 256000)
parallel -- 执行并行加载 (默认 FALSE)
direct -- 使用直接路径 (默认 FALSE)
trailing nullcols -- 表的字段没有对应的值时允许为空
执行sqlldr装载文本:
sqlldr victor/victor control=test.ctl
查询表test进行结果验证:
SQL> select * from test where rownum<9;
C1 C2 C3 C4
---------- -------------- ---------------- ---------------
Jackson 95 1989-08-05 NewYork
Michael 92 1990-01-20 Bei Jing
Emily 100 1989-11-10
Victor 89 Shenzhen
Unkown
92 GuangZhou
Shanghai
SQL> select * from test where c1='Jackson';
C1 C2 C3 C4
---------- ---------- ---------- ---------------
Jackson 95 1989-08-05 NewYork
SQL> select * from test where c4='Bei Jing';
C1 C2 C3 C4
---------- ---------- ---------- ---------------
Michael 92 1990-01-20 Bei Jing
SQL> select * from test where c4='Shanghai';
C1 C2 C3 C4
---------- ---------- ---------- ---------------
Shanghai
以上显示导入正常!
- Oracle sqlldr使用总结
- oracle的sqlldr的使用总结
- oracle的sqlldr的使用总结
- oracle sqlldr 总结
- oracle sqlldr使用
- Oracle中sqlldr使用
- Oracle的sqlldr使用例子
- oracle中的SQLLDR工具使用
- oracle sqlldr工具的使用
- oracle使用SQLLDR导数据
- oracle sqlldr使用心得
- Oracle中sqlldr的使用
- 用Oracle sqlldr导入文本文件TXT 总结
- 用Oracle sqlldr导入文本文件TXT 总结
- 用Oracle sqlldr导入文本文件TXT 总结
- 用Oracle sqlldr导入文本文件TXT 总结
- 用Oracle sqlldr导入文本文件TXT 总结
- sqlldr oracle
- 林锐博士提供的试题
- java interrupted使用
- UML核心元素之用例
- 礼拜天的遐想
- centos下常用查看命令
- Oracle sqlldr使用总结
- 关于规划
- 自适应多分辨率多尺寸布局
- win7 X64 下使用debug
- 设计阶段如何画用例视图(Use-Case View)
- 操作目录栈
- framebuffer及显示驱动层次关系
- 微软的复兴之道(3)——直面个人用户,提供全面产品
- cocos2d-x学习笔记(1)--coco2d-x引擎下载及环境搭建