`

将本地数据根据规则导入到数据库表的几种方法

 
阅读更多

SQL*Loader

 

SQL*LoaderOracle数据库导入外部数据的一个系统工具,在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)        DISCARDFILEDISCARDDN是同义词。记录没有通过的数据。DISCARDSDISCARDMAX是同义词。Integer 为最大放弃的文件个数。

 

2.       对加载方法的控制

a)       INSERT。缺省方法,该选项要求数据载入前表为空,否则SQL Loader会退出

b)       APPEND。在原有记录基础上追加数据,不影响原有数据,原有数据为空也可以。

c)       REPLACE。这种方式先删除表的数据,然后载入新纪录,值得注意的是,这种方法将触发表上的触发器

d)      TRUNCATE。这种方法在载入前,会不带记录点回滚点的删除数据,不会触发触发器,是不可恢复的。使用这种方法必须保证表没有证完整性约束,且执行用户具有权限。

 

3.       对导入逻辑的控制

a)       THIS 检查当前记录条件,如果为真则连接下一个记录。

b)       NEXT 检查下一个记录条件。如果为真,则连接下一个记录到当前记录来。

c)       Start: end 表示要检查在THISNEXT字串是否存在继续串的列,以确定是否进行连接。如: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 指两个分界符内的数据。如果同时用 ENCLOSEDTERMINAED ,则它们的顺序决定计算的顺序。

 

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 FilesMS Access Database

载入数据

 操作和Text Importer类似,在第一个tab页加载数据。

 路径:菜单栏à Tools à ODBC Importer


 
选择载入类型之后,在user namepassword处填的是要载入的到的数据库的用户名和密码,点击connect, 在弹出的对话框里选择相应文件,Excel file类型弹出的如下:


 
选择文件后数据会加载到界面:


 
第二个tab页的操作和Text Import一致,也可以保存和使用模板,并且模板在ODBC ImporterText Importer之间是可以通用的。

 

  • 大小: 62.7 KB
  • 大小: 36.2 KB
  • 大小: 628 Bytes
  • 大小: 278 Bytes
  • 大小: 238 Bytes
  • 大小: 513 Bytes
  • 大小: 52 KB
  • 大小: 42.5 KB
  • 大小: 25.3 KB
  • 大小: 12.7 KB
  • 大小: 35.8 KB
  • 大小: 61.4 KB
1
2
分享到:
评论

相关推荐

    Oracle数据库管理员技术指南

    5.2.10 将归档重做日志自动传送到备用 数据库 5.2.11 启动管理恢复 5.2.12 只读打开备用数据库 5.2.13 热备用数据库的维护 5.3 回顾 第6章 高级的失败切换方法 6.1 将 Oracle 并行服务器用于失败切换 6.2 ...

    oracle详解

    表空间传输是8i新增加的一种快速在数据库间移动数据的一种办法,是把一个数据库上的格式数据文件附加到另外一个数据库中,而不是把数据导出成Dmp文件,这在有些时候是非常管用的,因为传输表空间移动数据就象复制...

    Powerbuilder9.0实用教程源代码

    2.将源文件中“数据库文件”文件夹一定要复制到C盘根目录下,这样才能保证您连接数据库文件成功,具体方法参见《附录A 源代码的使用方法》。 对于书中源代码除了数据库外其他都能正常使用,而示例中数据库需要用户...

    datanymizer:强大的数据库匿名器,具有灵活的规则。 写在锈

    有几种安装pg_datanymizer 。 为您选择一个更方便的选项。 预编译二进制 # Linux / macOS / Windows (MINGW and etc). Installs it into ./bin/ by default $ curl -sSfL ...

    asp.net知识库

    将数据库表中的数据生成Insert脚本的存储过程!!! 2分法-通用存储过程分页(top max模式)版本(性能相对之前的not in版本极大提高) 分页存储过程:排序反转分页法 优化后的通用分页存储过程 sql语句 一些Select检索高级...

    CuteFTP9简易汉化版

    一种上传软件将选中的文件和文件夹上传到远程FTP服务器上的一个归档文件,并将恢复您的数据档案,如果你的电脑出现故障。 远程Backup-CuteFTP允许您创建的远程副本文件和文件夹在您的本地计算机上定期或在预定的时间。...

    C/C++笔试题(附答案,华为面试题系列)

    答:将操作多个表的操作放入到事务中进行处理 22.TCP/IP 建立连接的过程?(3-way shake) 答:在TCP/IP协议中,TCP协议提供可靠的连接服务,采用三次握手建立一个连接。  第一次握手:建立连接时,客户端发送syn包...

    vc++ 开发实例源码包

    服务器可以将收集到的信息以柱状图和文件列表以及其他方式呈现给用户,以便用户对局域网内的主机进行监测和管理。 CClockST_demo 电子钟的实现,自绘Button、Static的实现,其中自定了一个辅助主题风格类。 ...

    Python编程入门经典

    1.3.3 为什么有3种类型的引号 7 1.3.4 使用print()函数 7 1.3.5 理解不同的引号 8 1.4 串联两个字符串 10 1.5 用不同的方法串联字符串 11 1.6 本章小结 12 1.7 习题 13 第2章 数值与运算符 15 2.1 不同类型的数值 15...

    ASP ISchool随机抽题考试系统

    2.将系统设置存储到了数据库 3.修复系统存在的数个BUG 4.改良抽题算法 5.改良系统安装文件,增加数个权限检查点 V3.4Sp1(20100816) 增加 1.增加考试项目管理搜索功能 2.增加导入考生文件是否上传完成判断 3.增加...

    网页与Web程序设计 课件 ppt 机械工业出版社 part1

    15.1.1 创建逐帧动画的几种方法 284 15.1.2 制作过程 284 15.2 形状补间动画 287 15.2.1 创建形状补间动画的方法 287 15.2.2 制作过程 287 15.3 动作补间动画 288 15.3.1 创建动作补间动画的方法 288 15.3.2...

    JAVA WEB 开发详解:XML+XSLT+SERVLET+JSP 深入剖析与实例应用.part2

    1.4.1 xml将数据与显示分开 5 1.4.2 xml对文档的格式要求更加严格 6 1.4.3 xml有且只能有一个根元素 6 1.5 xml的编辑工具 7 1.6 xml文档 8 1.6.1 xml声明 9 1.6.2 文档类型声明 10 1.6.3 元素 11 1.6.4 注释...

    JAVA WEB 开发详解:XML+XSLT+SERVLET+JSP 深入剖析与实例应用.part5

    1.4.1 xml将数据与显示分开 5 1.4.2 xml对文档的格式要求更加严格 6 1.4.3 xml有且只能有一个根元素 6 1.5 xml的编辑工具 7 1.6 xml文档 8 1.6.1 xml声明 9 1.6.2 文档类型声明 10 1.6.3 元素 11 1.6.4 注释...

    JAVA WEB 开发详解:XML+XSLT+SERVLET+JSP 深入剖析与实例应用.part4

    1.4.1 xml将数据与显示分开 5 1.4.2 xml对文档的格式要求更加严格 6 1.4.3 xml有且只能有一个根元素 6 1.5 xml的编辑工具 7 1.6 xml文档 8 1.6.1 xml声明 9 1.6.2 文档类型声明 10 1.6.3 元素 11 1.6.4 注释...

    JAVA WEB 开发详解:XML+XSLT+SERVLET+JSP 深入剖析与实例应用.part3

    1.4.1 xml将数据与显示分开 5 1.4.2 xml对文档的格式要求更加严格 6 1.4.3 xml有且只能有一个根元素 6 1.5 xml的编辑工具 7 1.6 xml文档 8 1.6.1 xml声明 9 1.6.2 文档类型声明 10 1.6.3 元素 11 1.6.4 注释...

    MySQLDBA运维笔记.pdf

    1.5.2 下面来介绍优雅关闭数据库方法: ...................................................................22 1.6 登录 mysql 方法.............................................................................

Global site tag (gtag.js) - Google Analytics