Oracle 加载数据
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 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,查看是否有数据。