将本地数据根据规则导入到数据库表的几种方法
SQL*Loader
?
SQL*Loader是Oracle数据库导入外部数据的一个系统工具,在Unix下,SQL Loader一般由命令和控制文件组成,命令定义执行的模式,控制文件定义数据映射和可选逻辑。SQL Loader 的特点是能装入不同数据类型文件及多个数据文件以及固定格式,自由定界以及可度长格式的数据,控制文件灵活,速度快(ORACLE自称可以达到每小时处理100GB数据的能力)等。
?
Sqlldr命令
?
首先通过查看SQL Loader的帮助信息来了解下sqlldr的使用方法(注:如下图所示,输入sqlldr后回车即可查看其帮助信息):
?
?
Ctl 控制文件
?
控制文件是SQL*Loader的灵魂,在控制文件中可以设置以何种方式导入,是追加还是覆盖;以何种方式识别数据文件等等。下面是如何编写控制文件的一个标准模板:
OPTIONS? (? [SKIP=integer] [ LOAD = integer ] [ERRORS = integer] [ROWS=integer] [BINDSIZE=integer] [SILENT=(ALL|FEEDBACK|ERROR|DISCARD) ] ?)
LOAD [DATA]
[ { INFILE | INDDN } {file | * } [ STREAM | RECORD | FIXED length [BLOCKSIZE size]| VARIABLE [length] ]? [ { BADFILE | BADDN } file ] {DISCARDS | DISCARDMAX} integer ]
[ {INDDN | INFILE} . . . ]
[ APPEND | REPLACE | INSERT ]
[RECLENT integer]
[ { CONCATENATE integer | CONTINUEIF { [THIS | NEXT] (start[: end])LAST } Operator { 'string' | X 'hex' } } ]
INTO TABLE [user.]table
[APPEND | REPLACE|INSERT]
[WHEN condition [AND condition]...]
[FIELDS [delimiter] ]
(
column {
RECNUM |
CONSTANT value |
SEQUENCE ( { integer | MAX |COUNT} [, increment] ) |
[POSITION ( { start [end] | * [ + integer] } ) ]
datatype
[TERMINATED [ BY ] {WHITESPACE| [X] 'character' } ]
[ [OPTIONALLY] ENCLOSE[BY] [X]'charcter']
[NULLIF condition ]
[DEFAULTIF condotion]
}
[ ,...]
)
[INTO TABLE...]
[BEGINDATA]
?
?
* 表示前字段之后立刻开始。
+ 从前列开始向后条的位置数。
?
例子:
OPTIONS(SKIP=0)LOAD DATAREPLACEINTO TABLE CUX_TEST_TABLEFIELDS TERMINATED BY X'09'TRAILING NULLCOLS(supp_id "CUX_TEST_SEQ_S.NEXTVAL",supp_company_code CHAR "TRIM(TO_CHAR(:supp_company_code))",supp_date DATE 'YYYYMMDD',supp_amount INTEGER EXTERNAL,supp_process_status CONSTANT "1", supp_creation_date "to_date(SYSDATE)")
?
?
?
PLSQL Developer工具载入数据
?PLSQL Developer提供一些数据载入的工具,操作比较简单,可以定义数据映射模板,并且可重复使用。
Text Importer载入数据
菜单栏à Tools à Text Importer
?
左上角的图标表示:
打开一个数据文件,可支持 txt, csv, tsv, prn文件
通过粘贴数据,可以从Excel中复制数据,点击这个按钮粘贴直接载入数据
新建一个导入
打开一个数据模板定义
打开一个文件或复制数据进入界面后,可以定义相关参数和模板映射,在第一个tab页定义参数:
?在第二个tab页定义数据映射:
?选择表的schema和表名,clear table表示是否在载入数据前清空表,然后定义数据映射,映射时需定义数据类型,和处理数据的单值函数,例如trim()。准备载入的数据可以在result preview预览。
最后点击左下角的Import就可以载入。
映射模板
相同的数据映射关系,可以保存模板,下次只要直接打开就可以重复使用映射关系和参数了。
?
ODBC Importer
?
ODBC Importer功能类似Text Importer,但是ODBC Importer可以解析二进制文件,支持dBASE file, Excel Files和MS Access Database
载入数据
?操作和Text Importer类似,在第一个tab页加载数据。
?路径:菜单栏à Tools à ODBC Importer
?选择载入类型之后,在user name和password处填的是要载入的到的数据库的用户名和密码,点击connect, 在弹出的对话框里选择相应文件,Excel file类型弹出的如下:
?选择文件后数据会加载到界面:
?第二个tab页的操作和Text Import一致,也可以保存和使用模板,并且模板在ODBC Importer和Text Importer之间是可以通用的。
?