Oracle 加载数据

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

Oracle 加载数据

使用SQL*Loader加载数据的关键是编写控制文件,控制文件决定要加载的数据格式。在控制文件中,根据数据文件的格式,控制文件也分为自由格式与固定格式。如果数据文件中的数据是按一定规律排列,这时可以使用固定格式加载,控制文件通过数据的固定长度将数据分割。如果要加载的数据没有一定格式,则可以使用自由格式加载,控制文件将用分割符将数据分隔分不同字段中的数据。

1.自由格式加载

在本示例中将使用自由格式加载TXT文件。

(1)创建一个空表结构,以存储要加载的数据。这里创建了一个基表EMPLOYEES,其结构如下:

SQL> create table employees (

2 empno number(4),

3 ename varchar2(20),

4 job varchar2(20),

5 sal number(7,2),

6 deptno number(4)

7 );

表已创建。

(2)整理数据文件EMPLOYEES.TXT,整理后的格式如下:

198 OConnell SH_CLERK 2860.00 50

199 Grant SH_CLERK 2860.00 50

200 Whalen AD_ASST 4840.00 10

201 Hartstein MK_MAN 14300.00 20

202 Fay MK_REP 6600.00 20

203 Mavris HR_REP 7150.00 40

204 Baer PR_REP 11000.00 70

205 Higgins AC_MGR 13200.00 110

206 Gietz AC_ACCOUNT 9130.00 110

(3)编辑控制文件EMPLOYEES.CTL,确定加载数据的方式。创建的控制文件的格式如下:

load data

infile 'f:\employees.txt'

into table employees_copy

(empno position(01:04) integer external,

ename position(05:16) char,

job position(17:27) char,

sal position(28:36) decimal external,

deptno position(40:45) integer external)

其中,INFILE指定源数据文件,INTO TABLE 指定添加数据的目标基本表,还可以使用关键字APPEND表示向表中追加数据,或使用关键字REPLACE覆盖表中原来的数据。加载工具通过POSITION控制数据的分割,以便将分隔后的数据添加到表中的各个列。

(4)调用SQL*Loader加载数据。

在命令行中设置控制文件名,以及运行后产生的日志信息文件。

C:\>sqlldr system/admin control=f:\employees.ctl log=f:\emp_log

(5)检查日志文件确认是否有错误数据。

检查日志文件,以确认数据加载是否成功。可以根据日志文件中的提示信息,修改产生错误的原因。

2.固定格式加载Excel数据

Excel保存数据的一种格式就为“CSV(逗号分隔)”,该文件类型通过指定的分隔符隔离各列的数据,这就为通过SQL*Loader工具加载Excel中的数据提供了可能。在本示例中将通过SQL*Loader加载Excel中数据。

(1)打开Excel,输入如表14-1所示的数据。

表14-1 输入到Excel中的数据

10 Administration

20 Marketing

30 Purchasing

40 Human Resources

50 Shipping

60 IT

(2)保存Excel文件DEPARTMENTS.CSV,注意保存文件的格式为“CSV(逗号分隔)”。

(3)创建一个与Excel数据相对应的表。

SQL> create table departments_copy(

2 deptno number(4),

3 dname varchar2(20));

表已创建。

(4)编辑控制文件DEPT.CTL,内容如下:

load data

infile 'f:\departments.csv'

append into table departments

fields terminated by ','

(deptno,dname)

其中FIELDS TERMINA TED BY指定数据文件中的分隔符为逗号“,”。数据的加载方式为APPEND,表示在表中追加新数据。

(5)调用SQL*Loader来加载数据。

C:\>sqlldr system/admin control=f:\department.ctl

加载数据后,用户可以连接到SQL*Plus中,查询基本表DEPT,查看是否有数据。

相关文档
最新文档