sqlldr的使用示例

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

Sqlldr的使用

一个简单的sqlldr例子

在介绍功能之前,首先我们来试用一个最简单的sqlldr例子。

前提:安装了oracle客户端。

在“开始”->“运行”,输入“cmd”,回车。在打开的dos窗口里输入:sqlldr。如果显示如下,就表明你已经安装了sqlldr并且使用了。

下面,我为了快速学习,先忽略参数的说明。只管用一个简单的例子。

我在本机上安装了Linux的oracle数据库,现在先建立一个测试的表:

create table tdsxhwn.tbtestsqlldr(

id int,

name varchar(10)

)

然后配置一个连接服务,别名为LOCALHOST_ORCL

打开PL/SQL即可看到:

如果没有PL/SQL,也可以在$ORACLE_HOME\client_1\NETWORK\ADMIN\tnsnames.ora文件找到:

现在,我在“D:\sqlldr”文件夹里创建两个文件:

control.txt文件:

data.txt

然后,在刚才的dos窗口里输入:

sqlldr userid=tdsxhwn/td$123@LOCALHOST_ORCL control=d:\sqlldr\control.txt log= d:\sqlldr\out.log

上面sqlldr的格式是:

sqlldr userid=用户/密码@服务别名control= control文件路径log=日志文件路径

效果如下:

我们去数据库里查一下:

select * from tdsxhwn.tbtestsqlldr

该结果与data.txt的数据对比,可以看出有些不太一样

这时,我们到D:\sqlldr会发现有一个data.bad和out.log的文件,”*.bad”通常就是记录插入数据库失败的行,而”out.log”是我们刚才指定的日志名,打开data.bad可以看到:

4##gdktcattsoft

kk##name

刚好这两行是没有插入到表tdsxhwn.tbtestsqlldr的。

打开out.log可以看到其中一些信息:

这里告诉了我们,第三和第四行记录发生了什么样的错误

而第五行:7##gd##catt;由于超出了字段数量,超出部分自动被截取掉了。

Sqlldr拥有的功能

加载可变长度或指定长度的记录

固定程度数据load 可以通过position 来指定

跳过数据行

导入数据时修改数据

将数据导入多个表

导入选定的记录

导入时跳过某些字段

导入多行记录

对记录字段记录进行拆分

将多个数据文件同时load 进数据库

load 数据到表分区

null if 空替代

详细见sqlloader使用指南。

去字段值双引号

现在,我们把data.dat改为:

把control.txt改为:

先truncate掉数据表tdsxhwn.tbtestsqlldr,再执行重新执行sqlldr命令。查询数据库可以看到:

现在明白了,数据库先去掉了数据的双引号,然后再入库。

FIELDS TERMINATED BY " ## " :表示数据字段之间用“##”号分隔;OPTIONALLY ENCLOSED BY ' " ':表示数据字段值用“””双引号括起来;" str '\n' ":表示数据行用“\n”分行,默认以行来分行。

如果我们的值如种结构:

那么我们修改control.txt文件如下:

先truncate掉数据表tdsxhwn.tbtestsqlldr,再执行重新执行sqlldr命令。查询数据库可以看到:

对数据行换行情况

我们修改data.dat为:

把control.txt修改如下:

先truncate掉数据表tdsxhwn.tbtestsqlldr,再执行重新执行sqlldr命令。查询数据库可以看到:

相关文档
最新文档