• linkedu视频
  • 平面设计
  • 电脑入门
  • 操作系统
  • 办公应用
  • 电脑硬件
  • 动画设计
  • 3D设计
  • 网页设计
  • CAD设计
  • 影音处理
  • 数据库
  • 程序设计
  • 认证考试
  • 信息管理
  • 信息安全
菜单
linkedu.com
  • 网页制作
  • 数据库
  • 程序设计
  • 操作系统
  • CMS教程
  • 游戏攻略
  • 脚本语言
  • 平面设计
  • 软件教程
  • 网络安全
  • 电脑知识
  • 服务器
  • 视频教程
  • MsSql
  • Mysql
  • oracle
  • MariaDB
  • DB2
  • SQLite
  • PostgreSQL
  • MongoDB
  • Redis
  • Access
  • 数据库其它
  • sybase
  • HBase
您的位置:首页 > 数据库 >DB2 > DB2 Load 和 Oracle SQL*Loader

DB2 Load 和 Oracle SQL*Loader

作者:匿名 字体:[增加 减小] 来源:互联网 时间:2017-06-28

匿名通过本文主要向大家介绍了db2 load,db2 load命令详解,sysproc.db2load,db2 load命令,db2 load client等相关知识,希望本文的分享对您有所帮助
</div>

Oracle SQL*Loader 使用一个控制文件装载数据,DB2 LOAD 实用程序也是这样。但是,这些控制文件的结构很不一样,许多 Oracle 和 DB2 DBA 希望了解它们的差异。在本文中,要对比这两个实用程序,讨论如何使用 Perl 工具把 Oracle SQL*Loader 脚本转换为 LOAD 脚本。因为在大型数据仓库中空间总是很宝贵的,本文还解释如何修改 DB2 LOAD 的数据文件。

DB2 LOAD 与 Oracle SQL*Loader 的对比

DB2 LOAD 与 DB2 IMPORT — 使用哪种 “路径”?

实际上,DB2 有两种把外部数据源中的数据迁移到 DB2 表的实用程序:LOAD 和 IMPORT。LOAD 在页面级存放数据,这会绕过触发器和日志记录机制,并停止约束检查和索引构建,直到完成数据迁移。另一方面,IMPORT 基本上是执行 INSERT,所以在把数据放到表中时,会触发触发器、执行日志记录并执行约束检查和索引构建。这两个实用程序的选项之间还有其他许多差异,但是这超出了本文的范围。

另一方面,Oracle SQL*Loader 实用程序有两种操作模式,或者说操作路径:直接路径和传统路径。Oracle DBA 在使用这种实用程序时要指定 “路径”,这两种路径的效果分别与两个 DB2 实用程序相似。SQL*Loader “直接路径” 模式的功能与 DB2 LOAD 相似。SQL*Loader “传统路径” 模式的功能与 DB2 IMPORT 相似。

作为 DB2 迁移专家,我们发现大多数 Oracle DBA 在通常使用 SQL*Loader 的传统模式,他们的经验和脚本也是针对传统路径的。实际上,一些 Oracle DBA 从来没有使用过 SQL*Loader 的直接路径模式。但是,当他们开始学习 DB2 时,常常选用 DB2 LOAD 实用程序(可能是因为这个名称);因为 LOAD 具有 SQL*Loader 直接路径模式的许多特征,而这些 Oracle DBA 没有使用过直接路径,所以他们会遇到许多困难。因此,为了把问题谈清楚,尽管大多数 Oracle DBA 通常使用传统模式,本文会演示如何把所有 SQL*Loader 脚本转换为 DB2 LOAD 实用程序脚本,无论原来的脚本采用哪个路径。我们认为这样做有助于 DB2 产生最佳性能。如果由于某种原因 DBA 希望把这些脚本转换为使用 IMPORT 而不是 LOAD,以后也可以这么做(如果情况允许的话)。

SQL*Loader 命令行 — 调用 SQLLDR

用 SQLLDR 二进制代码调用 Oracle SQL*Loader 实用程序,使用的命令行语法与 DB2 LOAD 相似。命令行可以包含许多关键字,比如告诉 SQL*Loader 实用程序把消息发送到哪里、把丢弃的记录发送到哪里等等。

SQLLDR 命令行还指定 “控制文件” 的名称(常常具有 .CTL 扩展名)。这个控制文件也可以告诉 SQL*Loader 实用程序把消息发送到哪里、把丢弃的记录发送到哪里等等。SQLLDR 命令行中的关键字设置优先于控制文件中的设置,所以要想了解 SQL*Loader 会话的实际工作方式,必须同时关注 SQLLDR 命令行和控制文件。这样的设计方式可能是为了提高 SQL*Loader 的灵活性和功能,但是在把脚本迁移到 DB2 时,如果在这两个位置都使用了一些相同的关键字,而且各个脚本的设置不一致,就可能引起混乱。

SQL*Loader 控制文件指定装载操作的细节,所以在对比 SQL*Loader 和 DB2 LOAD 时,主要对比 SQLLDR 控制文件和 DB2 LOAD 命令行。但是,我们要先讨论 SQLLDR 命令行的所有选项,并将其与 DB2 LOAD 命令行进行比较,看看它们的相似之处。然后,讨论控制文件及其关键字和选项,再与 DB2 LOAD 命令行进行比较。

表 1. DB2 LOAD 与 Oracle SQL*Loader 直接路径

特性DB2 LOADSQL*Loader(直接路径)
直接路径使用 DB2 LOAD 实用程序使用 SQL*Loader 直接路径 —— 传统路径的许多选项不可用。
在装载后生成统计数据是(如果替换数据),不(如果追加数据)不
可恢复可以,使用 COPY YES 选项在直接路径中不可以
默认(值)可用 不可用
使用多个输入文件 可以对于一个 SQLLDR,只能使用一个文件
异常数据写到一个异常表和/或 DUMP 文件写到一个异常表
从游标装载是否
从管道装载是是
BLOBS/CLOBS是是
XML 文档是是
在装载时允许压缩是是
在线装载 是 —— 可以访问表在直接路径中,不是在线装载
在装载时可以修改数据吗?可以 —— 通过用户退出可以 —— 传统路径(SQL 字符串)

不可以 —— 直接路径

在列中填充常量值不可以可以,使用 CONSTANT 关键字
在多个数据库分区中装载可以无
如何调用?它是一个可以从 SQL 脚本调用的 DB2 命令,也可以使用 API 通过应用程序调用它是一个可以从命令行调用的独立实用程序,可以在应用程序中通过 API 调用
如何监视装载状态?从另一个连接运行 LOAD QUERY 或 LIST UTILITIES 命令查看日志文件
并行性经过充分优化,可以使用多个 CPU、多个进程和线程可以通过使用多线程实现并行

清单 1. Oracle SQLLDR 命令行语法示例

SQLLDR CONTROL=sample.ctl DATA=sample.dat LOG=sample.log BAD=sample.bad
DISCARD=sample.dsc
    USERID=scott/tiger ERRORS=999 LOAD=2000 DISCARDMAX=5    

表 2. Oracle SQLLDR 命令行关键字与 DB2 LOAD 关键字的比较

Oracle SQLLDR 关键字Oracle SQLLDR 关键字说明DB2 LOAD 关键字DB2 LOAD 关键字说明
CONTROL=filename.ctl 包含详细的 LOAD 命令选项的文件。无不从控制文件单独调用 DB2 LOAD 命令选项。DB2 LOAD 命令在一个调用中包含所有关键字。
DIRECT=true调用 Oracle SQL*Loader 实用程序的直接路径模式。LOAD DB2 LOAD 实用程序本身非常接近 Oracle SQL*Loader 实用程序的直接路径模式。
DIRECT=false如果不使用这个关键字或值为 “false”,就调用 Oracle SQL*Loader 实用程序的传统路径模式。IMPORT DB2 IMPORT 实用程序本身非常接近 Oracle SQL*Loader 实用程序的传统路径模式。
BAD=filename.bad存储被拒绝的记录的地方。MODIFIED BY DUMPFILE=filename这个 DB2 LOAD 修饰符用来决定在哪里存储被拒绝的记录。
DATA=filename.dat输入数据源文件。FROM sourcenameDB2 LOAD 的 sourcename 可以是文件、管道、设备或游标。
DISCARD=filename.dsc由于各种原因未装载的异常记录。FOR EXCEPTION tablenameDB2 LOAD 把违反惟一索引规则的记录(异常)放到以前创建的一个表中。
DISCARDMAX=number定义在 SQLLDR 终止之前允许的最大丢弃记录数。WARNINGCOUNT=number在达到这个警告数时,DB2 LOAD 终止。丢弃仅仅是警告类型之一。
ERRORS=number定义在 SQLLDR 终止之前允许的最大错误数。NOROWWARNINGS 修饰符 NOROWWARNINGS 可以关闭行警告,但是仍然保留异常记录的警告。
LOAD=number要装载的记录数(ALL 是默认设置)。ROWCOUNT number指定要装载的记录数。如果省略这个关键字,默认设置是所有记录。
MULTITHREADING=true允许在客户端进行流构建,在服务器端进行流装载。CPU_PARALLELISM number

DISK_PARALLELISM number

FETCH_PARALLELISM yes

DB2 LOAD 自动决定这些设置,用来控制为对文件、设备、管道和游标装载中的记录进行解析、转换、格式化和写操作所生成的线程数。也可以使用这些关键字指定自己需要的值。
ROWS=number每次数据保存存储的行数。SAVECOUNT numberDB2 LOAD 使用一致点确保装载操作的可恢复性。
LOG=logfileLOG 存储装载操作的输出。MESSAGES messagefileDB2 把消息放到这个消息文件中。如果不指定消息文件,它就不产生消息。
SILENT=optionsSILENT=options 可以关闭操作不同部分的消息输出。NOROWWARNINGS 修饰符 NOROWWARNINGS 关闭操作不同部分的消息输出。
SKIP=number在 n 个记录之后开始装载。通常,如果装载操作提交了部分装载,但是操作没有完成,就使用这个关键字重新启动这个操作。

注意:如果使用这个特性,SQL*Loader 要求操作者自己决定装载启始点,选择错误的数值会导致丢失数据或数据重复。

RESTART

(REPLACE, INSERT, TERMINATE)

DB2 LOAD 使用这个模式在遇到故障之前的最后一个一致点之后选择重新装载的启始点。DB2 LOAD 会自己决定启始点,不需要操作者计算。

DB2 LOA

分享到:QQ空间新浪微博腾讯微博微信百度贴吧QQ好友复制网址打印

您可能想查找下面的文章:

  • db2 导入导出单个表的操作详解
  • DB2 常用命令小结
  • DB2 常用命令速查(备忘)
  • DB2 LOAD 工具使用技巧集合
  • DB2 rollforward 命令使用详解
  • DB2 Load 和 Oracle SQL*Loader
  • DB2 Load 和 Oracle SQL*Loader
  • 有关DB2常用命令总结
  • DB2常用命令集
  • 有关DB2常用命令总结

相关文章

  • 2017-06-28DB2 9.5 提供给.NET开发的XML工具概述
  • 2017-05-11DB2 9的九大新特性
  • 2017-06-28DB2与PostgreSQL开发的异同
  • 2017-06-28访问 IBM 数据库服务器的新方式 —— 构建 Web 服务
  • 2017-06-28带你深入了解IBM DB2的通信与连接过程
  • 2017-06-28如何建立DB2服务器报表并在前端Access显示
  • 2017-06-28DB2 V9.5 工作负载管理简介
  • 2017-05-11DB2数据库的备份和恢复
  • 2017-06-28在系统和应用程序WPAR中实现DB2的安装和配置
  • 2017-06-28在 Linux 上使用 Google Maps API、DB2/Informix 和 PHP 创建地图

文章分类

  • MsSql
  • Mysql
  • oracle
  • MariaDB
  • DB2
  • SQLite
  • PostgreSQL
  • MongoDB
  • Redis
  • Access
  • 数据库其它
  • sybase
  • HBase

最近更新的内容

    • DB2数据同步方面的经验
    • DB2 信息集成: 总览图
    • DB2常见问题1000问(之二)
    • 雇员工作空间系列: 配置和开发 DB2 Content Manager 8.2 的单点登录 portlet
    • DB2 pureXML 动态编程组合拳:iBatis+BeanUtils+JiBX
    • IBM WebSphere Portal Web Content Manager 和 DB2 调优指南
    • db2v8的pdf文档资料
    • DB2编程序技巧(1)
    • DB2 9.5 SQL Procedure Developer 认证考试 735 准备,第5部分
    • DB2 V9.7 新特性:在线移动表

关于我们 - 联系我们 - 免责声明 - 网站地图

©2020-2025 All Rights Reserved. linkedu.com 版权所有