Oracle 使用SQL Loader 从外部导入数据

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/green1893/article/details/6943010

在项目中经常会有一些基础数据需要从Excel或其他文件中导入。大部分的格式都是树结构。如果是这样,我们对数据稍加整理,即可使用Oracle的数据导入工具SQL Loader导入我们所需要的数据到指定的表中。SQL Loader的详细用法,可自己查询相关详细的文档,这里只做简单的使用介绍。

1、对数据进行整理。

拿出数据和数据库中表比照一下,整理成与数据库一致的机构(如果只是几个字段即对应字段,整理成记录的形式)。

2、使用Excel将数据导出另存为txt或者rtf形式的文件。以具体某种分隔符分隔。

3、编写SQL Loader使用的控制文件。

下面是一简单的控制文件sqlloader_nrfl.ctl

load data
infile 'nrfl.txt'
append into table gy_nrfl
fields terminated by X'09'
(flid,mc,qc,sjid,sfzx)

 
 

其中append为附加记录到表中,X'09'为分隔符(制表符)

注意字段与表中字段对应一致

4、使用sqlldr命令导入。

Windows环境下,使用cmd进入控制文件所在目录,执行命令sqlldr userid=scott/tiger@orcl control=sqlloader_nrfl.ctl,数据导入成功。导入默认生成同名为log后缀的日志文件,查看该日志文件可以看到如下内容:

SQL*Loader: Release 10.2.0.3.0 - Production on 星期一 11月 7 10:54:27 2011

Copyright (c) 1982, 2005, Oracle.  All rights reserved.

控制文件:      sqlloader_nrfl.ctl
数据文件:      nrfl.txt
  错误文件:    nrfl.bad
  废弃文件:    未作指定
 
(可废弃所有记录)

要加载的数: ALL
要跳过的数: 0
允许的错误: 50
绑定数组: 64 行, 最大 256000 字节
继续:    未作指定
所用路径:       常规

表 GY_NRFL,已加载从每个逻辑记录
插入选项对此表 APPEND 生效

   列名                        位置      长度  中止 包装数据类型
------------------------------ ---------- ----- ---- ---- ---------------------
FLID                                FIRST     *  WHT      CHARACTER            
MC                                   NEXT     *  WHT      CHARACTER            
QC                                   NEXT     *  WHT      CHARACTER            
SJID                                 NEXT     *  WHT      CHARACTER            
SFZX                                 NEXT     *  WHT      CHARACTER            



表 GY_NRFL:
  177 行 加载成功。
  由于数据错误, 0 行 没有加载。
  由于所有 WHEN 子句失败, 0 行 没有加载。
  由于所有字段都为空的, 0 行 没有加载。



为绑定数组分配的空间:                 82560 字节 (64 行)
读取   缓冲区字节数: 1048576

跳过的逻辑记录总数:          0
读取的逻辑记录总数:           177
拒绝的逻辑记录总数:          0
废弃的逻辑记录总数:        0

从 星期一 11月 07 10:54:27 2011 开始运行
在 星期一 11月 07 10:54:27 2011 处运行结束

经过时间为: 00: 00: 00.16
CPU 时间为: 00: 00: 00.09


如果导入过程中有失败的记录,会被记录到nrfl.bad文件中,如果没有这个文件,说明导入已经成功执行,发现了这个文件,可以查看下具体失败的原因,作出相应的修改后再次执行命令(注意修改控制文件的数据源文件,改为nrfl.bad文件即可)。


猜你喜欢

转载自blog.csdn.net/green1893/article/details/6943010