前言
今天主要学习下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 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 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
「喜欢这篇文章,您的关注和赞赏是给作者最好的鼓励」
关注作者
【版权声明】本文为墨天轮用户原创内容,转载时必须标注文章的来源(墨天轮),文章链接,文章作者等基本信息,否则作者和墨天轮有权追究责任。如果您发现墨天轮中有涉嫌抄袭或者侵权的内容,欢迎发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。
评论
您好,您的文章已入选合格奖,10墨值奖励已经到账请查收!
❤️我们还会实时派发您的流量收益。
3年前

评论
相关阅读
【纯干货】Oracle 19C RU 19.27 发布,如何快速升级和安装?
Lucifer三思而后行
687次阅读
2025-04-18 14:18:38
Oracle RAC 一键安装翻车?手把手教你如何排错!
Lucifer三思而后行
635次阅读
2025-04-15 17:24:06
Oracle数据库一键巡检并生成HTML结果,免费脚本速来下载!
陈举超
546次阅读
2025-04-20 10:07:02
【活动】分享你的压箱底干货文档,三篇解锁进阶奖励!
墨天轮编辑部
493次阅读
2025-04-17 17:02:24
【ORACLE】记录一些ORACLE的merge into语句的BUG
DarkAthena
490次阅读
2025-04-22 00:20:37
【ORACLE】你以为的真的是你以为的么?--ORA-38104: Columns referenced in the ON Clause cannot be updated
DarkAthena
480次阅读
2025-04-22 00:13:51
一页概览:Oracle GoldenGate
甲骨文云技术
469次阅读
2025-04-30 12:17:56
火焰图--分析复杂SQL执行计划的利器
听见风的声音
418次阅读
2025-04-17 09:30:30
3月“墨力原创作者计划”获奖名单公布
墨天轮编辑部
372次阅读
2025-04-15 14:48:05
OR+DBLINK的关联SQL优化思路
布衣
357次阅读
2025-05-05 19:28:36