1

【测试方案】关于数据迁移工具sqlload的简易使用步骤 -利来国际app

jose chen 2021-11-01
267

今天主要学习下sqlload的简单实用方法,学习环境为linux oracle 11g。
这块学习内容属于数据库迁移的知识,sqlload工具适用于将文本文件导入到数据库,分为两种方式:常规导入和直接路径导入。常规导入等同于sql语句的执行导入,如果数据量较大的话,会慢一点;而直接路径导入则等同于直接拷贝数据文件,速度会更快一点。
下面通过一个小实验,感受下这款数据导入工具的使用

实验一(数据和控制文件代码在一个文件)

  1. scott用户下,新建表dept1,将dept的数据导入
sql> conn scott/scott
connected.
sql> create table dept1 as select * from dept where 1=2;
table created.

2.使用vi编辑器编写sqlload的控制文件,内容如下

[[email protected] 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导入命令

[[email protected] 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
利来娱乐 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

实验二(控制文件和数据文件分开)

  1. 编辑控制文件和数据文件,内容如下
[[email protected] oracle]$ cat aa.txt
load data
infile bb.txt   #由于数据文件在同目录,所以不需要指定路径
append into table dept1   #参数append代表追加数据
fields terminated by ',' optionally enclosed by '"'
(deptno,
dname,
loc)
[[email protected] oracle]$ cat bb.txt
10,accounting,"new york"
20,research,dallas
30,sales,chicago
40,operations,boston

2.使用操作系统命令导入数据到数据库里

[[email protected] 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
利来娱乐 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
「喜欢文章,快来给作者赞赏墨值吧」
【利来手机国际的版权声明】本文为墨天轮用户原创内容,转载时必须标注文章的来源(墨天轮),文章链接,文章作者等基本信息,否则作者和墨天轮有权追究责任。如果您发现墨天轮中有涉嫌抄袭或者侵权的内容,欢迎发送邮件至:[email protected]进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论