今天主要学习下sqlload的简单实用方法,学习环境为linux oracle 11g。
这块学习内容属于数据库迁移的知识,sqlload工具适用于将文本文件导入到数据库,分为两种方式:常规导入和直接路径导入。常规导入等同于sql语句的执行导入,如果数据量较大的话,会慢一点;而直接路径导入则等同于直接拷贝数据文件,速度会更快一点。
下面通过一个小实验,感受下这款数据导入工具的使用
实验一(数据和控制文件代码在一个文件)
- scott用户下,新建表dept1,将dept的数据导入
sql> conn scott/scott
connected.
sql> create table dept1 as select * from dept where 1=2;
table created.
2.使用vi编辑器编写sqlload的控制文件,内容如下
[oracle@localhost oracle]$ cat a.txt
load data
infile * #由于数据文件和控制文件在一起,故此处使用*
into table dept1 #填写要插入的表名,前缀默认insert,对无数据的表进行插入数据;如果表已有数据,可使用append参数,在表里追加数据
fields terminated by ',' optionally enclosed by '"' #代表要插入数据的格式,使用逗号隔开,类似示例中“new york”这类中间带空格的,则使用双引号标注
(deptno, #括号内写入表的字段名
dname,
loc)
begindata
10,accounting,"new york"
20,research,dallas
30,sales,chicago
40,operations,boston
tips:强烈建议将代码多分开几行书写,不要堆砌在一起。这样运行的时候,linux的报错可以直接指出是哪一行出错,能更快速定位到我们的错误位置。本人便是因为代码里的一个中文括号,折腾了许久
3.运行sqlldr导入命令
[oracle@localhost oracle]$ sqlldr scott/scott control='/u01/oracle/a.txt'
sql*loader: release 11.2.0.1.0 - production on mon nov 1 19:01:51 2021
米乐app官网下载 copyright (c) 1982, 2009, oracle and/or its affiliates. all rights reserved.
commit point reached - logical record count 4
4.此时登录数据库,查看dept1的数据,可以看到导入成功了
sql> set line 1000
sql> select * from dept1;
deptno dname loc
---------- -------------------- ---------------------------------------
10 accounting new york
20 research dallas
30 sales chicago
40 operations boston
实验二(控制文件和数据文件分开)
- 编辑控制文件和数据文件,内容如下
[oracle@localhost oracle]$ cat aa.txt
load data
infile bb.txt #由于数据文件在同目录,所以不需要指定路径
append into table dept1 #参数append代表追加数据
fields terminated by ',' optionally enclosed by '"'
(deptno,
dname,
loc)
[oracle@localhost oracle]$ cat bb.txt
10,accounting,"new york"
20,research,dallas
30,sales,chicago
40,operations,boston
2.使用操作系统命令导入数据到数据库里
[oracle@localhost oracle]$ sqlldr scott/scott control='/u01/oracle/aa.txt'
sql*loader: release 11.2.0.1.0 - production on mon nov 1 20:33:38 2021
米乐app官网下载 copyright (c) 1982, 2009, oracle and/or its affiliates. all rights reserved.
commit point reached - logical record count 4
3.登入数据库,查看是否导入成功
sql> select * from dept1;
deptno dname loc
---------- ------------------------------------------ ---------------------------------------
10 accounting new york
20 research dallas
30 sales chicago
40 operations boston
10 accounting new york
20 research dallas
30 sales chicago
40 operations boston
8 rows selected.
本文举的例子算是最简单的使用了,在实际工作中,数据会以各种形式出现,只有了解sqlldr各项参数的含义,才可以写出适合自己的代码。
另外,数据的大小也是一个需要斟酌的因素。sqlldr导入的效率如果太差,就需要使用直接路径的导入方式,否则就该考虑换个工具。
最后修改时间:2021-12-22 14:37:57
「喜欢这篇文章,您的关注和赞赏是给作者最好的鼓励」
关注作者
【米乐app官网下载的版权声明】本文为墨天轮用户原创内容,转载时必须标注文章的来源(墨天轮),文章链接,文章作者等基本信息,否则作者和墨天轮有权追究责任。如果您发现墨天轮中有涉嫌抄袭或者侵权的内容,欢迎发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。