SQL*LOADER操作篇
程序员文章站
2022-05-07 12:10:43
...
本篇介绍sqlldr使用过程中,比较常用的4中需求(个人认为),SQL*LOADER的原理和一些关键字的含义就不在絮叨,很多人在说这事,顺便鄙视一下那些在网上粘贴别人文章,不注明出处的人,比较气愤,今天在网上查资料的时候,所有人都一样,找不到原版,还注明原创,MD......这么多人的文章都一字不差,真是有缘!
需求一、单数据文件导入一张数据表中
文字是苍白的,事例才是震撼的,所以举例说明:
1、创建测试表:
create table test_loader_1(id number(4),name varchar2(20));
2、创建一个bat文件(在windows下可以直接调用命令行的)
sqlldr userid=scott/ruiyuan control=D:\sqlloader\user.ctl parallel=true --特别注意,一个sqlldr只能写一个控制文件
3、创建一个控制文件.ctl文件
LOAD DATA
INFILE 'D:\sqlloader\test1.txt'
APPEND INTO TABLE test_loader_1
FIELDS TERMINATED BY X'09' --(Tab分隔符)
TRAILING NULLCOLS --(表的字段没有对应的值时允许为空)
(ID,NAME)
4、创建数据文件test1.txt,内容为
1 a
2 b
准备工作已经结束,直接点击bat,之后查询test_loader_1表,就会看到有两条数据。
需求二、多数据文件导入一张数据表中
1、创建测试表:
create table test_loader_1(id number(4),name varchar2(20));
2、创建一个bat文件(在windows下可以直接调用命令行的)
sqlldr userid=scott/ruiyuan control=D:\sqlloader\user.ctl parallel=true
3、创建一个控制文件.ctl文件
LOAD DATA
INFILE 'D:\sqlloader\test1.txt'
INFILE 'D:\sqlloader\test2.txt'
APPEND INTO TABLE test_loader_1
FIELDS TERMINATED BY X'09' --(Tab分隔符)
TRAILING NULLCOLS
(ID,NAME)
4、创建数据文件test1.txt和test2.txt,内容为
test1.txt
1 a
2 b
test2.txt
3 c
4 d
准备工作已经结束,直接点击bat,之后查询test_loader_1表,就会看到数据在里面了。
需求三、单数据文件导入多张数据表中
1、创建测试表:
create table test_loader_1(id number(4),name varchar2(20));
create table test_loader_2(id number(4),name varchar2(20),password varchar2(20));
2、创建一个bat文件(在windows下可以直接调用命令行的)
sqlldr userid=scott/ruiyuan control=D:\sqlloader\user.ctl parallel=true
3、创建一个控制文件.ctl文件
LOAD DATA
INFILE 'D:\sqlloader\test1.txt'
APPEND INTO TABLE test_loader_1
WHEN TAB='ABC'
FIELDS TERMINATED BY X'09'
TRAILING NULLCOLS
(TAB FILLER POSITION(1:3),ID,NAME)
INTO TABLE test_loader_2
WHEN TAB='CBA'
FIELDS TERMINATED BY X'09'
TRAILING NULLCOLS
(TAB FILLER POSITION(1:4),
ID,
NAME,
PASSWORD
)
4、创建数据文件test1.txt内容为
test1.txt
ABC1 a
ABC2 b
CBA3 c
CBA4 d
准备工作已经结束,直接点击bat,之后查询test_loader_1和test_loader_2表,就会看到数据在里面了。
需求四、多数据文件导入多张数据表中
1、创建测试表:
create table test_loader_1(id number(4),name varchar2(20));
create table test_loader_2(id number(4),name varchar2(20),password varchar2(20));
2、创建一个bat文件(在windows下可以直接调用命令行的)
sqlldr userid=scott/ruiyuan control=D:\sqlloader\user.ctl parallel=true
3、创建一个控制文件.ctl文件
LOAD DATA
INFILE 'D:\sqlloader\test1.txt'
INFILE 'D:\sqlloader\test2.txt'
APPEND INTO TABLE test_loader_1
WHEN TAB='ABC'
FIELDS TERMINATED BY X'09'
TRAILING NULLCOLS
(TAB FILLER POSITION(1:3),ID,NAME)
INTO TABLE test_loader_2
WHEN TAB='CBA'
FIELDS TERMINATED BY X'09'
TRAILING NULLCOLS
(TAB FILLER POSITION(1:4),
ID,
NAME,
PASSWORD
)
4、创建数据文件test1.txt内容为
test1.txt
ABC1 a
ABC2 b
CBA3 c
CBA4 d
test2.txt
ABC1 a
ABC2 b
CBA3 c
CBA4 d
准备工作已经结束,直接点击bat,之后查询test_loader_1和test_loader_2表,就会看到数据在里面了。
目前没有解决的问题就是在第四种情况下,能精确指定每个表对应的数据文件是哪个,这样的话不用 WHEN
TAB='CBA' 进行字符串匹配,很节约CPU运算,文档中没提这事。
希望有此经历的大牛赐教!
http://blog.csdn.net/cupid1102/article/details/7357510
需求一、单数据文件导入一张数据表中
文字是苍白的,事例才是震撼的,所以举例说明:
1、创建测试表:
create table test_loader_1(id number(4),name varchar2(20));
2、创建一个bat文件(在windows下可以直接调用命令行的)
sqlldr userid=scott/ruiyuan control=D:\sqlloader\user.ctl parallel=true --特别注意,一个sqlldr只能写一个控制文件
3、创建一个控制文件.ctl文件
LOAD DATA
INFILE 'D:\sqlloader\test1.txt'
APPEND INTO TABLE test_loader_1
FIELDS TERMINATED BY X'09' --(Tab分隔符)
TRAILING NULLCOLS --(表的字段没有对应的值时允许为空)
(ID,NAME)
4、创建数据文件test1.txt,内容为
1 a
2 b
准备工作已经结束,直接点击bat,之后查询test_loader_1表,就会看到有两条数据。
需求二、多数据文件导入一张数据表中
1、创建测试表:
create table test_loader_1(id number(4),name varchar2(20));
2、创建一个bat文件(在windows下可以直接调用命令行的)
sqlldr userid=scott/ruiyuan control=D:\sqlloader\user.ctl parallel=true
3、创建一个控制文件.ctl文件
LOAD DATA
INFILE 'D:\sqlloader\test1.txt'
INFILE 'D:\sqlloader\test2.txt'
APPEND INTO TABLE test_loader_1
FIELDS TERMINATED BY X'09' --(Tab分隔符)
TRAILING NULLCOLS
(ID,NAME)
4、创建数据文件test1.txt和test2.txt,内容为
test1.txt
1 a
2 b
test2.txt
3 c
4 d
准备工作已经结束,直接点击bat,之后查询test_loader_1表,就会看到数据在里面了。
需求三、单数据文件导入多张数据表中
1、创建测试表:
create table test_loader_1(id number(4),name varchar2(20));
create table test_loader_2(id number(4),name varchar2(20),password varchar2(20));
2、创建一个bat文件(在windows下可以直接调用命令行的)
sqlldr userid=scott/ruiyuan control=D:\sqlloader\user.ctl parallel=true
3、创建一个控制文件.ctl文件
LOAD DATA
INFILE 'D:\sqlloader\test1.txt'
APPEND INTO TABLE test_loader_1
WHEN TAB='ABC'
FIELDS TERMINATED BY X'09'
TRAILING NULLCOLS
(TAB FILLER POSITION(1:3),ID,NAME)
INTO TABLE test_loader_2
WHEN TAB='CBA'
FIELDS TERMINATED BY X'09'
TRAILING NULLCOLS
(TAB FILLER POSITION(1:4),
ID,
NAME,
PASSWORD
)
4、创建数据文件test1.txt内容为
test1.txt
ABC1 a
ABC2 b
CBA3 c
CBA4 d
准备工作已经结束,直接点击bat,之后查询test_loader_1和test_loader_2表,就会看到数据在里面了。
需求四、多数据文件导入多张数据表中
1、创建测试表:
create table test_loader_1(id number(4),name varchar2(20));
create table test_loader_2(id number(4),name varchar2(20),password varchar2(20));
2、创建一个bat文件(在windows下可以直接调用命令行的)
sqlldr userid=scott/ruiyuan control=D:\sqlloader\user.ctl parallel=true
3、创建一个控制文件.ctl文件
LOAD DATA
INFILE 'D:\sqlloader\test1.txt'
INFILE 'D:\sqlloader\test2.txt'
APPEND INTO TABLE test_loader_1
WHEN TAB='ABC'
FIELDS TERMINATED BY X'09'
TRAILING NULLCOLS
(TAB FILLER POSITION(1:3),ID,NAME)
INTO TABLE test_loader_2
WHEN TAB='CBA'
FIELDS TERMINATED BY X'09'
TRAILING NULLCOLS
(TAB FILLER POSITION(1:4),
ID,
NAME,
PASSWORD
)
4、创建数据文件test1.txt内容为
test1.txt
ABC1 a
ABC2 b
CBA3 c
CBA4 d
test2.txt
ABC1 a
ABC2 b
CBA3 c
CBA4 d
准备工作已经结束,直接点击bat,之后查询test_loader_1和test_loader_2表,就会看到数据在里面了。
目前没有解决的问题就是在第四种情况下,能精确指定每个表对应的数据文件是哪个,这样的话不用 WHEN
TAB='CBA' 进行字符串匹配,很节约CPU运算,文档中没提这事。
希望有此经历的大牛赐教!
http://blog.csdn.net/cupid1102/article/details/7357510
推荐阅读
-
Vue + Webpack + Vue-loader学习教程之相关配置篇
-
PL/SQL系统定义的异常的操作实例
-
ORACLE PL/SQL 触发器编程篇介绍
-
清除SQL SERVER错误日志出现操作系统错误的解决方法
-
Shell脚本中执行sql语句操作mysql的5种方法
-
SQL Server 存储过程遇到“表 ''#TT'' 没有标识属性无法执行 SET 操作”错误
-
【第八篇】Python的文件(file)操作
-
在asp.net中操作sql server数据库的一些小技巧
-
C# SQL server数据库基本操作(连接、增、删、改、查)封装
-
深入SQL SERVER合并相关操作Union,Except,Intersect的详解