sqlloader 的CTL 文件里 filter怎么写

sqlloader 的CTL 文件里 filter怎么写,第1张

sqlldr userid=lgone/tiger control=a.ctl

LOAD DATA

INFILE 't.dat' // 要导入的文件

// INFILE 'tt.date' // 导入多个文件

// INFILE * // 要导入的内容就在control文件里 下面的BEGINDATA后面就是导入的内容

INTO TABLE table_name // 指定装入的表

BADFILE 'c:\bad.txt' // 指定坏文裤敬胡件地址

************* 以下是4种装入表的方式

APPEND // 原先的表有数据 就加在后面

// INSERT // 装载空表 如果原先的表有数据 sqlloader会停止 默认值

// REPLACE // 原先的表有数据 原先的数据会全部删除

// TRUNCATE // 指定的内容和replace的相同 会用truncate语句删除现存数据

************* 指定的TERMINATED可以在表的开头 也可在表的内部字段部分

FIELDS TERMINATED BY ',' OPTIONALLY ENCLOSED BY '"'

// 装载这种数据: 10,lg,"""lg""","lg,lg"

// 在表中结果: 10 lg "lg" lg,lg

// TERMINATED BY X '09' // 以十六进制格式 '09' 表示的

// TERMINATED BY WRITESPACE // 装载这种数据: 10 lg lg

TRAILING NULLCOLS ************* 表的字段没有对应的值时允许为空

************* 下面是表的字段

(

col_1 , col_2 ,col_filler FILLER // FILLER 关键字 此列的数值不会被装载

// 如: lg,lg,not 结果 lg lg

)

// 当没声明FIELDS TERMINATED BY ',' 时

// (

// col_1 [interger external] TERMINATED BY ',' ,

// col_2 [date "dd-mon-yyy"] TERMINATED BY ',' ,

// col_3 [char] TERMINATED BY ',' OPTIONALLY ENCLOSED BY 'lg'

// )

// 当没声明FIELDS TERMINATED BY ','用位置告诉字段装载数据

// (

 稿茄 // col_1 position(1:2),

// col_2 position(3:10),

// col_3 position(*:16), // 这个字段的开始位置在前一字段的结束位置

// col_4 position(1:16),

// col_5 position(3:10) char(8) // 指定字段的类型

// )

BEGINDATA //胡拦 对应开始的 INFILE * 要导入的内容就在control文件里

10,Sql,what

20,lg,show

=====================================================================================

//////////// 注意begindata后的数值前面不能有空格

1 ***** 普通装载

LOAD DATA

INFILE *

INTO TABLE DEPT

REPLACE

FIELDS TERMINATED BY ',' OPTIONALLY ENCLOSED BY '"'

(DEPTNO,

DNAME,

LOC

)

BEGINDATA

10,Sales,"""USA"""

20,Accounting,"Virginia,USA"

30,Consulting,Virginia

40,Finance,Virginia

50,"Finance","",Virginia // loc 列将为空

60,"Finance",,Virginia // loc 列将为空

2 ***** FIELDS TERMINATED BY WHITESPACE 和 FIELDS TERMINATED BY x'09' 的情况

LOAD DATA

INFILE *

INTO TABLE DEPT

REPLACE

FIELDS TERMINATED BY WHITESPACE

-- FIELDS TERMINATED BY x'09'

(DEPTNO,

DNAME,

LOC

)

BEGINDATA

10 Sales Virginia

3 ***** 指定不装载那一列

LOAD DATA

INFILE *

INTO TABLE DEPT

REPLACE

FIELDS TERMINATED BY ',' OPTIONALLY ENCLOSED BY '"'

( DEPTNO,

FILLER_1 FILLER, // 下面的 "Something Not To Be Loaded" 将不会被装载

DNAME,

LOC

)

BEGINDATA

20,Something Not To Be Loaded,Accounting,"Virginia,USA"

4 ***** position的列子

LOAD DATA

INFILE *

INTO TABLE DEPT

REPLACE

( DEPTNO position(1:2),

DNAME position(*:16), // 这个字段的开始位置在前一字段的结束位置

LOC position(*:29),

ENTIRE_LINE position(1:29)

)

BEGINDATA

10Accounting Virginia,USA

5 ***** 使用函数 日期的一种表达 TRAILING NULLCOLS的使用

LOAD DATA

INFILE *

INTO TABLE DEPT

REPLACE

FIELDS TERMINATED BY ','

TRAILING NULLCOLS // 其实下面的ENTIRE_LINE在BEGINDATA后面的数据中是没有直接对应

// 的列的值的 如果第一行改为 10,Sales,Virginia,1/5/2000,, 就不用TRAILING NULLCOLS了

(DEPTNO,

DNAME "upper(:dname)", // 使用函数

LOC "upper(:loc)",

LAST_UPDATED date 'dd/mm/yyyy', // 日期的一种表达方式 还有'dd-mon-yyyy' 等

ENTIRE_LINE ":deptno:dname:loc:last_updated"

)

BEGINDATA

10,Sales,Virginia,1/5/2000

20,Accounting,Virginia,21/6/1999

30,Consulting,Virginia,5/1/2000

40,Finance,Virginia,15/3/2001

6 ***** 使用自定义的函数 // 解决的时间问题

create or replace

function my_to_date( p_string in varchar2 ) return date

as

type fmtArray is table of varchar2(25)

看看参考下!

输入sqlldr 后面不接任何参数 将显示所有的命令行参数的简单描述及其默认值(当你忘记某些乱亏参数时 也可以通过这个方式快速查询)

[plain]

Valid Keywords:

userid ORACLE username/password

control control file name

log log file name

bad bad file name

仔陪橡data data file name

discard discard file name

discardmax number of discards to allow (Default all)

skip number of logical records to skip (Default )

load number of logical records to load (Default all)

errors number of errors to allow (Default )

rows number of rows in conventional path bind array or beeen direct path data saves

(Default: Conventional path Direct path all)

bindsize size of conventional path bind array in bytes (Default )

silent suppress messages during run (header feedback errors discards partitions)

direct use direct path (Default FALSE)

parfile parameter file: name of file that contains parameter specifications

parallel do parallel load (Default FALSE)

file file to allocate extents from

skip_unusable_indexes disallow/allow unusable indexes or index partitions (Default FALSE)

skip_index_maintenance do not maintain indexes mark affected indexes as unusable (Default FALSE)

mit_discontinued mit loaded rows when load is discontinued (Default FALSE)

readsize size of read buffer (Default )

external_table use external table for loadNOT_USED GENERATE_ONLY EXECUTE (Default NOT_USED)

columnarrayrows number of rows for direct path column array (Default )

streamsize size of direct path stream buffer in bytes (Default )

念旁multithreading use multithreading in direct path

resumable enable or disable resumable for current session (Default FALSE)

resumable_name text string to help identify resumable statement

resumable_timeout wait time (in seconds) for RESUMABLE (Default )

date_cache size (in entries) of date conversion cache (Default )

no_index_errors abort load on any index errors (Default FALSE)

为了不用每次都在命令行中输入同样的参数 你也可以使用参数文件或把参数写在控制文件的OPTIONS字句里 当然命令行参数的优先级最高 可以覆盖参数文件和控制文件里的参数配置

SQL*Loader默认是导入到本地数据库 但也支持导入到远程数据库 只要在username后面加上 @远程数据库连接字符串 即可 如下所示

>sqlldr CONTROL=ulcase ctl

Username: scott@inst

Password: password

下面是命令行参数的具体解释

BAD 坏文件名 ( bad)

CONTROL 控制文件名 ( ctl)

DATA 数据文件名( dat) 等同于控制文件里的INFILE 可以指定多个数据文件

DIRECT true表示使用直接路径加载 false表示使用传统路径加载

DISCARD 丢失文件名( dsc)

DISCARDMAC 最多允许多少条记录可以被丢失 如果超过该数字 将停止加载

ERRORS 最多预习多少条记录insert失败 如果超过该数字 将停止加载

EXTERNAL_TABLE 是否使用外部表加载方式

FILE 该参数只在直接路径并行加载时有用

LOAD 最多允许多少条记录可以被加载

LOG 日志文件名( log)

PARALLEL true or false 直接路径加载是否使用并行模式

PARFILE 参数文件名( par)

ROWS 指定达到多少条记录时提交

SKIP 指定忽略最开始的多少条记录

lishixinzhi/Article/program/Oracle/201311/17310


欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/tougao/12292254.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-24
下一篇 2023-05-24

发表评论

登录后才能评论

评论列表(0条)

保存