【转】sqlload导入大量数据 步骤详解
(2013-02-21 15:41:47)
标签:
it |
分类: oracle |
一、加载txt文本
1.在D盘建立sqlldr的控制文件,111.ctl
内容如下
LOAD
DATA
INFILE
'd:\111.txt'
INTO TABLE
SALGRADE_TEST
TRUNCATE
FIELDS TERMINATED BY
','
(GRADE,LOSAL,HISAL)
2.在D盘建立sqlldr的数据文件111.txt,内容如下格式
1,700,1200
2,1201,1400
3,1401,2000
4,2001,3000
5,3001,9999
3.在CMD的命令行模式执行加载操作
sqlldr scott/tiger
control=d:\111.ctl log=d:\111.log
bad=d:\111.ba
SQL*Loader: Release 11.2.0.1.0
- Production on 星期三 9月 14 10:58:35
2011
Copyright (c) 1982, 2009,
Oracle and/or its affiliates.
达到提交点 - 逻辑记录计数
4
达到提交点 - 逻辑记录计数
5
4.登录数据库验证加载结果
D:\window\server\mysql-5.1.51\bin>sqlplus
scott/tiger
连接到:
Oracle Database 11g Enterprise
Edition Release 11.2.0.1.0 -
Production
With the Partitioning, OLAP,
Data Mining and Real Application Testing
options
SQL> select * from
SALGRADE_TEST;
GRADE
---------- ----------
----------
5.导入成功之后,查看111.log
6.注释
LOAD DATA
控制文件标识
www.dbdream.org
www.dbdream.org
INFILE 'd:\111.txt'为数据文件地址和名称,此处如果是INFILE *表示要加载的数据就在
这个控制文件里,也就是BEGINDATA后面跟的内容。详见7
INTO TABLE
SALGRADE_TEST要往SALGRADE_TEST表里加载数据
TRUNCATE如果表里有数据,先truncate表,然后再加载,TRUNCATE还可换成其他值,比如
insert,为缺省方式,在数据装载开始时要求表为空,如果表中有数据,会报错而终止。
SQL*Loader-601:
append,在表中追加新记录,如果。表上有主键和唯一性约束,新加载的数据的相关字段值
不能重复
replace,删除旧记录,替换成新装载的记录
,要求有delete权限
truncate,同上,要求有truncate权限
FIELDS TERMINATED BY ',' 数据以逗号分隔,如果是TERMINATED BY WRITESPACE表示以空
白分隔,如果不指定FIELDS TERMINATED BY
',',需要为每一列都指定分隔符,如下:
(GRADE [interger external]
TERMINATED BY ',',
LOSAL [interger external]
TERMINATED BY ',',
HISAL [interger external]
TERMINATED BY ',')
例如:
LOAD
DATA
INFILE
'd:\111.txt'
TRUNCATE
INTO TABLE
SALGRADE_TEST
(GRADE TERMINATED BY
',',
LOSAL TERMINATED BY
',',
HISAL TERMINATED BY
',')
的数据对应,如果单独为每一列都指定了分隔符,此部分就不需要了。
7.如果数据量不大,可以讲sqlload 的数据文件(111.txt)集成到sqlload 的控制文件
(111.ctl)内,例如:
LOAD
DATA
INFILE
*
TRUNCATE
INTO TABLE
SALGRADE_TEST
FIELDS TERMINATED BY
','
(GRADE,LOSAL,HISAL)
BEGINDATA
www.dbdream.org
www.dbdream.org
1,700,1200
2,1201,1400
3,1401,2000
4,2001,3000
5,3001,9999
加载
D:\>sqlldr scott/tiger
control=d:\111.ctl
SQL*Loader: Release 11.2.0.1.0
- Production on 星期三 9月 14 17:03:53
2011
Copyright (c) 1982, 2009,
Oracle and/or its affiliates.
达到提交点 - 逻辑记录计数
4
达到提交点 - 逻辑记录计数
5
登录数据库验证加载结果
D:\>sqlplus
scott/tiger
连接到:
Oracle Database 11g Enterprise
Edition Release 11.2.0.1.0 -
Production
With the Partitioning, OLAP,
Data Mining and Real Application Testing options
SQL>
SELECT * FROM
SALGRADE_TEST;
GRADE
---------- ----------
----------
二、加载csv格式的数据
1.建立测试表
D:\>sqlplus
scott/tiger
连接到:
Oracle Database 11g Enterprise
Edition Release 11.2.0.1.0 –
Production
With the Partitioning, OLAP,
Data Mining and Real Application Testing
options
SQL> create table dept_test
as select * from dept where 1=2;
表已创建。
2.建立sqlload的数据文件111.csv,内容如下
10 ACCOUNTING
20 RESEARCH
30 SALES
40 OPERATIONS
3.建立sqlload的控制文件111.ctl,内容如下
LOAD
DATA
INFILE
'd:\111.csv'
TRUNCATE
www.dbdream.org
www.dbdream.org
INTO TABLE
DEPT_TEST
FIELDS TERMINATED BY
','
(DEPTNO,DNAME,LOC)
4.执行加载操作
D:\>sqlldr scott/tiger
control=d:\111.ctl log=d:\111.log
SQL*Loader: Release 11.2.0.1.0
- Production on 星期四 9月 15 09:47:44
2011
Copyright (c) 1982, 2009,
Oracle and/or its affiliates.
达到提交点 - 逻辑记录计数
4
5.登录数据库查询
D:\>sqlplus
scott/tiger
连接到:
Oracle Database 11g Enterprise
Edition Release 11.2.0.1.0 –
Production
With the Partitioning, OLAP,
Data Mining and Real Application Testing
options
SQL> select * from
dept_test;
DEPTNO
---------- --------------
-------------
三、加载图片到数据库
1.创建测试表,由于图片在数据库中以blob 的形式保存,这里是有了11g 的新特性,
securefiles
LOB的形式存储图片。
SQL> create table t_load_sf
(id number, full_name varchar2(100),
表已创建。
2.创建sqlload的数据文件111.txt,内容如下:
1,DSC00086.JPG
2,DSC00122.JPG
3,DSC00145.JPG
4,DSC00146.JPG
5,psu.jpg
3.创建sqlload的控制文件111.ctl,内容如下:
LOAD
DATA
INFILE
'111.txt'
INTO TABLE
T_LOAD_SF
TRUNCATE
FIELDS TERMINATED BY
','
(ID
CHAR(255),
www.dbdream.org
www.dbdream.org
FULL_NAME
CHAR(255),
CREATE_DATE
SYSDATE,
CONTENTS LOBFILE(FULL_NAME)
TERMINATED BY EOF)
4.加载
D:\test>sqlldr scott/tiger
control=D:\111.ctl log=d:\111.log
SQL*Loader: Release 11.2.0.1.0
- Production on 星期四 9月 15 11:29:13
2011
Copyright (c) 1982, 2009,
Oracle and/or its affiliates.
达到提交点 - 逻辑记录计数
5
5.登录数据库验证
SQL> select * from t_load_sf
where rownum=1;
ID FULL_NAME
-------- ---------------
--------------
-----------------------------------
1 DSC00086.JPG
如果使用plsqldev工具,可以看到加载进数据库的图片