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]
|
1. 对数据文件的控制
a) INFILE 和INDDN是同义词,它们后面都是要加载的数据文件。如果用 * 则表示数据就在控制文件内。
b) STRAM 表示一次读一个字节的数据。新行代表新物理记录(逻辑记录可由几个物理记录组成)。
c) RECORD 使用宿主操作系统文件及记录管理系统。如果数据在控制文件中则使用这种方法。
d) FIXED length 要读的记录长度为length字节。
e) VARIABLE 被读的记录中前两个字节包含的长度,length 记录可能的长度。缺省为8k字节。
f) DISCARDFILE和DISCARDDN是同义词。记录没有通过的数据。DISCARDS和DISCARDMAX是同义词。Integer 为最大放弃的文件个数。
2. 对加载方法的控制
a) INSERT。缺省方法,该选项要求数据载入前表为空,否则SQL Loader会退出
b) APPEND。在原有记录基础上追加数据,不影响原有数据,原有数据为空也可以。
c) REPLACE。这种方式先删除表的数据,然后载入新纪录,值得注意的是,这种方法将触发表上的触发器
d) TRUNCATE。这种方法在载入前,会不带记录点回滚点的删除数据,不会触发触发器,是不可恢复的。使用这种方法必须保证表没有证完整性约束,且执行用户具有权限。
3. 对导入逻辑的控制
a) THIS 检查当前记录条件,如果为真则连接下一个记录。
b) NEXT 检查下一个记录条件。如果为真,则连接下一个记录到当前记录来。
c) Start: end 表示要检查在THIS或NEXT字串是否存在继续串的列,以确定是否进行连接。如:continueif next(1-3)='WAG' 或continueif next(1-3)=X'0d03if'
4. 对字段识别读取的控制
a) TERMINATED 读完前一个字段即开始读下一个字段直到结束。
b) WHITESPACE 是指结束符是空格的意思。包括空格、Tab、换行符、换页符及回车符。如果是要判断但字符,可以用单引号括起,如X'1B'等。
c) OPTIONALLY ENCLOSED 表示数据应由特殊字符括起来。也可以括在TERMINATED字符内。使用OPTIONALLY要同时用TERMINLATED。
d) ENCLOSED 指两个分界符内的数据。如果同时用 ENCLOSED和TERMINAED ,则它们的顺序决定计算的顺序。
5. 对列定义的控制
column 是表列名。列的取值可以是:
a) BECHUM 表示逻辑记录数。第一个记录为1,第2个记录为2。
b) CONSTANT 表示赋予常数。
c) SEQUENCE表示序列可以从任意序号开始,格式为:SEQUENCE { integer | MAX |COUNT} [,increment]
d) POSITION 给出列在逻辑记录中的位置。可以是绝对的,或相对前一列的值。格式为:
e) POSITION ( {start[end] | * [+integer] } )
f) Start 开始位置
* 表示前字段之后立刻开始。
+ 从前列开始向后条的位置数。
例子:
OPTIONS(SKIP=0) LOAD DATA REPLACE INTO TABLE CUX_TEST_TABLE FIELDS 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之间是可以通用的。
相关推荐
5.2.10 将归档重做日志自动传送到备用 数据库 5.2.11 启动管理恢复 5.2.12 只读打开备用数据库 5.2.13 热备用数据库的维护 5.3 回顾 第6章 高级的失败切换方法 6.1 将 Oracle 并行服务器用于失败切换 6.2 ...
在实际使用时,开发者需要将数据库导入到MySQL服务器,通过SQL语句进行查询和操作。例如,查找某个省份的所有城市,可以编写如下SQL语句: ```sql SELECT * FROM provinces p JOIN cities c ON p.province_id = c....
ORA-01460错误全称为“ORA-01460: unimplemented unreasonable conversion requested”,主要出现在Oracle数据库中,当系统试图将一种数据类型转换为另一种无法处理的数据类型时触发。这种错误常见于数据导出(如...
- **Udal到Mysql/Udal**:通过DBProxy,根据用户定义的SQL条件筛选数据,将数据导入到预先创建的Mysql或Udal表中,适用于数据对比或修复。 - **Mysql/Oracle/Udal到Udal**:全量导入所有或指定表到Udal,要求目标...
这个“delphi编写的通用导数据程序”显然是一款利用Delphi的强大功能设计的数据导入工具,它能够帮助用户方便地将数据从一种格式或来源转移到另一种格式或目的地。 在Delphi中编写这样的程序,开发者通常会利用各种...
2. **数据整理与规范**: 通过专用的数据导入程序将NAIP数据光盘中的数据写入到本地数据库(如ORACLE数据库),并对这些数据进行分类和标准化处理。 ##### (二)实现ARINC424编码 1. **编码程序开发**: 需要编写...
对于不规则字段的排序可能涉及到将字符类型的列转换为数值类型,或者使用特定的函数来解析字段值,以实现正确的排序。 ### 求合计,左边加个合计,右边也加个合计 在SQL查询中,可以使用聚合函数和窗口函数来实现...
数据库文件.zip中包含了数据库的结构和可能的初始数据,你可以导入到本地MySQL服务器,以便于进行数据分析和查询。 结合这两部分,网站监控系统通过larbin爬虫定期抓取网站数据,并将其存储到MySQL数据库中。然后,...
数据库结构文档生成器是一种工具,它的主要功能是将数据库的架构信息整理并导出为文档形式,便于开发者、DBA(数据库管理员)和其他相关人员查阅和理解。这种工具在项目开发、数据库维护和团队协作中非常实用,因为...
转储数据库是通过BACKUP DATABASE命令来完成的,这可以将数据库的数据和结构复制到备份介质上。 - **6.3.4 转储事务日志** 转储事务日志是通过BACKUP LOG命令来完成的,这可以将事务日志的内容复制到备份介质上。...
5. **更新与同步**:一旦数据协调完成,Perl脚本会将更新的信息导入到本地馆藏系统,并同步到WorldCat,确保两个数据库的一致性。 6. **报告生成**:最后,项目可能还包括生成详细的报告,列出所有进行的更改、未...
这个系统采用C#编程语言开发,利用了微软的.NET Framework作为开发平台,体现了三层架构的设计模式,这是一种常见的软件设计模式,将业务逻辑、数据访问和用户界面分离,提高了代码的可维护性和可重用性。...
- 更常见的做法是将数据导入到数据库中,如MySQL或SQLite数据库。 #### 五、高级数据收集技巧 除了基本的数据收集步骤之外,还有一些高级技巧可以帮助提高数据收集的效率和质量: ##### 使用会话和连接池 - **...
2. **sqliteadmin**: sqliteadmin是另一个SQLite数据库管理工具,它提供了类似的功能,如数据库连接、表管理、数据导入导出、SQL脚本执行等。通过sqliteadmin,用户可以方便地创建和管理数据库模式,进行数据备份和...
本文从应用移植的角度描述了 ORACLE 和 DB2 存在的一些差异,列举了几种移植方案,结合作者参与的项目,对基干 MTK 的移植方案:MTK 移植工具的应用和两个数据库系统中不兼容的数据库对象的移植策略做了进一步的探讨...
2.将源文件中“数据库文件”文件夹一定要复制到C盘根目录下,这样才能保证您连接数据库文件成功,具体方法参见《附录A 源代码的使用方法》。 对于书中源代码除了数据库外其他都能正常使用,而示例中数据库需要用户...
表空间传输是8i新增加的一种快速在数据库间移动数据的一种办法,是把一个数据库上的格式数据文件附加到另外一个数据库中,而不是把数据导出成Dmp文件,这在有些时候是非常管用的,因为传输表空间移动数据就象复制...
随着面向对象编程方法的兴起,将内存中的对象数据持久化到关系型数据库中成为了常见的需求。这就导致了对象关系映射(ORM)中间件的出现。ORM中间件的目标是将数据库中的数据表映射为对象,以及将关系型数据以对象的...