在oralce中导入数据的方式有很多,比如:PL/SQL文本导入器、对表forupdate之后直接***粘贴等等,导入方式有很多,今天我们介绍另一种大批量数据导入方式:SQLldr,具体其用法可以上网查找,不详细介绍,这里我们通过一个例子演示给大家。
1、创建一个空表
create table EMP ( EMPNO VARCHAR2(50), NAME VARCHAR2(30), DEPTNO VARCHAR2(50) )
2、准备csv数据文件
图1 csv数据文件
如果你的数据文件是excel,没关系,我们可以另存为csv文件。
3、编写sqlldr控制文件
创建一个文本文件,命名为xxxx.ctl
load data infile '/lxz/emp.csv' append into table "EMP" fields terminated by ',' (EMPNO,NAME,DEPTNO)
解释:
infile:数据文件完整路径,可以写多个infile。append into table:后面跟表名,append是往表中追加记录。fields terminated by 每行数据列间的分隔符,后面紧跟表字段名称。目录结构:
如果你是root用户下创建的文件,而sqlldr是要在oralce用户下执行,执行过程中会报无权限的错误,所以这里我们需要通过chown给我们的文件及整个目录赋予权限。
chown oracle:oinstall emp.csv
这条命令执行之后,在oracle下就可以读写emp.csv文件了。
4、执行数据导入(核心)
su到oracle用户下,执行以下命令:
sqlldr userid=hn/123456@orcl control=/lxz/emp.ctl log=/lxz/emp.log
解释:
userid:用户名/密码@数据库服务名control:ctl控制文件完整路径log:日志文件,记录sqlldr数据导入时的操作日志,默认是控制文件名.log。sqlldr命令执行结果:
[oracle@ultrapower ~]$ sqlldr userid=hn/123456@orcl control=/lxz/emp.ctl log=/lxz/emp.log SQL*Loader: Release 11.2.0.4.0 - Production on Mon Apr 1 11:46:02 2019 Copyright (c) 1982, 2011, Oracle and/or its affiliates. All rights reserved. Commit point reached - logical record count 13
提示数据导入成功,有13条记录已写入。