Oracle SQL*Loader 快速导入文本行到表记录

本文介绍了如何使用SQLLoader在没有服务器控制文件的情况下,从客户端加载数据到Oracle数据库。首先创建了表`test`,然后在客户端创建了数据文件`test.dat`,通过SQL*Loader的Express模式尝试加载数据,遇到权限问题后切换到直接路径加载成功。最后展示了生成的控制文件`test.ctl`的内容及其使用方法,强调了控制文件在数据加载过程中的灵活性和可控性。
摘要由CSDN通过智能技术生成

SQLLoader,所有文件都在客户端,不在服务器端。
分两种模式
一种有控制文件
二种没有控制文件(SQL
Loader Express模式)

1、在服务器上建立表
create table test
( region char(3),
region_name varchar2(12),
bill_month number(6),
fee number(10,2)
);

2、在客户端建立一个test.dat文件
SQL> host cat test.dat
cat: test.dat: 没有那个文件或目录
SQL> !vi test.dat
530,HZ,200501,100.01
530,HZ,200502,800.23
531,JN,200501,5000.81
531,JN,200502,5360.00
532,QD,200501,20670.32
532,QD,200502,22000.08
533,ZB,200501,3050.56
533,ZB,200502,3108.14
SQL> host cat test.dat
530,HZ,200501,100.01
530,HZ,200502,800.23
531,JN,200501,5000.81
531,JN,200502,5360.00
532,QD,200501,20670.32
532,QD,200502,22000.08
533,ZB,200501,3050.56
533,ZB,200502,3108.14
[oracle@host01 ~]$ pwd
/home/oracle
[oracle@host01 ~]$ ls -l test.dat
-rw-r–r-- 1 oracle oinstall 176 9月 29 14:12 test.dat

SQL> host sqlldr hr/hr@orcl TABLE=test;
[oracle@host01 ~]$ sqlldr hr/hr@orcl TABLE=test;

SQL*Loader: Release 18.0.0.0.0 - Production on Wed Sep 29 14:17:48 2021
Version 18.3.0.0.0

Copyright © 1982, 2018, Oracle and/or its affiliates. All rights reserved.

Express Mode Load, Table: TEST
Path used: External Table, DEGREE_OF_PARALLELISM=AUTO
SQLLoader-816: error creating temporary directory object SYS_SQLLDR_XT_TMPDIR_00000 for file test.dat
ORA-01031: insufficient privileges
SQL
Loader-579: switching to direct path for the load
SQLLoader-583: ignoring trim setting with direct path, using value of LDRTRIM
SQL
Loader-584: ignoring DEGREE_OF_PARALLELISM setting with direct path, using value of NONE
Express Mode Load, Table: TEST
Path used: Direct

Load completed - logical record count 8.

Table TEST:
8 Rows successfully loaded.

Check the log file:
test.log
SQL> select * from test;

REGION REGION_NAME BILL_MONTH FEE


530 HZ 200501 100.01
530 HZ 200502 800.23
531 JN 200501 5000.81
531 JN 200502 5360
532 QD 200501 20670.32
532 QD 200502 22000.08
533 ZB 200501 3050.56
533 ZB 200502 3108.14

8 rows selected.

3、sqlldr后自动有生产一个文件test.log
里面含有如下部分,可以复制到一个文件内容,名为test.ctl
LOAD DATA
INFILE ‘test’
APPEND
INTO TABLE TEST
FIELDS TERMINATED BY “,”
(
REGION,
REGION_NAME,
BILL_MONTH,
FEE
)
所有就可以执行如下指令了,
有控制文件好处虽非Express模式但是ctl中的文件可以自定修改,灵活度高

[oracle@host01 ~]$ sqlldr hr/hr@orcl control=test.ctl
和上面同样效果

.ctl可以扩展如下功能
trailing nullcols是可以为空的,而Express模式是不可以为空的等

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值