python调用sqlldr_oracle中的SQLLDR工具使用

这个工具可以批量导入数据,具体使用方法如下:

用法: SQLLDR keyword=value [,keyword=value,...]

有效的关键字:

userid -- ORACLE 用户名/口令

control -- 控制文件名

log -- 日志文件名

bad -- 错误文件名

data -- 数据文件名

discard -- 废弃文件名

discardmax -- 允许废弃的文件的数目         (全部默认)

skip -- 要跳过的逻辑记录的数目  (默认 0)

load -- 要加载的逻辑记录的数目  (全部默认)

errors -- 允许的错误的数目         (默认 50)

rows -- 常规路径绑定数组中或直接路径保存数据间的行数

(默认: 常规路径 64, 所有直接路径)

bindsize -- 常规路径绑定数组的大小 (以字节计)  (默认 256000)

silent -- 运行过程中隐藏消息 (标题,反馈,错误,废弃,分区)

direct -- 使用直接路径                     (默认 FALSE)

parfile -- 参数文件: 包含参数说明的文件的名称

parallel -- 执行并行加载                    (默认 FALSE)

file -- 要从以下对象中分配区的文件

skip_unusable_indexes -- 不允许/允许使用无用的索引或索引分区  (默认 FALSE)

skip_index_maintenance -- 没有维护索引, 将受到影响的索引标记为无用  (默认 FALSE)

commit_discontinued -- 提交加载中断时已加载的行  (默认 FALSE)

readsize -- 读取缓冲区的大小               (默认 1048576)

external_table -- 使用外部表进行加载; NOT_USED, GENERATE_ONLY, EXECUTE  (默认 NOT_USED)

columnarrayrows -- 直接路径列数组的行数  (默认 5000)

streamsize -- 直接路径流缓冲区的大小 (以字节计)  (默认 256000)

multithreading -- 在直接路径中使用多线程

resumable -- 启用或禁用当前的可恢复会话  (默认 FALSE)

resumable_name -- 有助于标识可恢复语句的文本字符串

resumable_timeout -- RESUMABLE 的等待时间 (以秒计)  (默认 7200)

date_cache -- 日期转换高速缓存的大小 (以条目计)  (默认 1000)

PLEASE NOTE: 命令行参数可以由位置或关键字指定

。前者的例子是 'sqlload

scott/tiger foo'; 后一种情况的一个示例是 'sqlldr control=foo

userid=scott/tiger'.位置指定参数的时间必须早于

但不可迟于由关键字指定的参数。例如,

允许 'sqlldr scott/tiger control=foo logfile=log', 但是

不允许 'sqlldr scott/tiger control=foo log', 即使

参数 'log' 的位置正确。

下面以txt文件为例:

file.txt里包含了要导入的数据内容,file.ctl是控制文件其内容如下:

[oracle@oracle d]$ cat file.ctl

load data                                      //导入数据

infile 'file.txt'                                 //数据所在的文件名

append into table test2                 //要导入到那个表

fields terminated by ','                  //指出数据文件每个记录之间的分隔符

hostname,

ip,

type,

mem,

cpu,

disk                                           //字段名称

)

只要有这两个文件就够了,下面是个简单的脚本:

python调用sqlldr_oracle中的SQLLDR工具使用_第1张图片

运行此脚本后会在当前目录下生成一个file.log的日志文件,如果有错误存在可以查看日志文件进行排错,如下所示:

[oracle@oracle d]$ cat file.log

SQL*Loader: Release 10.2.0.4.0 - Production on 星期五 7月 16 11:12:52 2010

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

控制文件:      /home/oracle/d/file.ctl

数据文件:      ././file.txt

错误文件:    /home/oracle/d/file.bad

废弃文件:    未作指定

(可废弃所有记录)

要加载的数: ALL

要跳过的数: 0

允许的错误: 50

绑定数组: 64 行, 最大 256000 字节

继续:    未作指定

所用路径:       常规

表 TEST2,已加载从每个逻辑记录

插入选项对此表 APPEND 生效

列名                        位置      长度  中止 包装数据类型

------------------------------ ---------- ----- ---- ---- ---------------------

HOSTNAME                            FIRST     *   ,       CHARACTER

IP                                          NEXT     *   ,       CHARACTER

TYPE                                     NEXT     *   ,       CHARACTER

MEM                                      NEXT     *   ,       CHARACTER

CPU                                      NEXT     *   ,       CHARACTER

DISK                                    NEXT     *   ,       CHARACTER

表 TEST2:

49 行 加载成功。

由于数据错误, 0 行 没有加载。

由于所有 WHEN 子句失败, 0 行 没有加载。

由于所有字段都为空的, 0 行 没有加载。

为绑定数组分配的空间:                 99072 字节 (64 行)

读取   缓冲区字节数: 1048576

跳过的逻辑记录总数:          0

读取的逻辑记录总数:            49

拒绝的逻辑记录总数:          0

废弃的逻辑记录总数:        0

从 星期五 7月  16 11:12:52 2010 开始运行

在 星期五 7月  16 11:12:52 2010 处运行结束

经过时间为: 00: 00: 00.17

CPU 时间为: 00: 00: 00.05

以下是非常不错的文献:

你可能感兴趣的:(python调用sqlldr)