18_数据传输技术
Data Pump引入数据
• 与expdp工具对应的是impdp工具。impdp 工具可以执行Data Pump引入数据操作。
Data Pump引入数据的新增功能
• 支持使用元数据过滤器,允许用户控制引入对象 的类型,例如索引、函数、过程等。 • 可以根据需要悬挂或重新启动引入作业。 • 可以分离或附加某个已有的引入作业。 • 可以从失败点启动大多数失败的引入作业。 • 可以控制引入操作过程中使用的线程数量。 • 支持网络模式操作,允许直接加载其他数据库。 • 可以控制引入对象的类型。允许用户引入某个版 本的Oracle数据库,并且确保数据库各版本之间 的兼容性。该功能只能用于Oracle Database 10g 以后的系统。
SQL*Loader基本用法
• 要使用SQLLDR,需要有一个控制文件(.ctl 文件)。控制文件中包含描述输入数据的 信息(如输入数据的布局、数据类型等), 另外还包含有关目标表的信息。
• 控制文件甚至还可以包含要加载的数据。
控制文件简单示例
ቤተ መጻሕፍቲ ባይዱ• 控制文件
LOAD DATA INFILE * INTO TABLE SalGrade FIELDS TERMINATED BY ',' OPTIONALLY ENCLOSED BY ‘”’ (SGID, SGGRADE, SGLoSal,SGHiSal) BEGINDATA 1,1,1,1000 2,2,1001,2000 3,3,2001,3000 4,4,3001,4000 5,5,4001,5000 6,6,5001,6000
SQL*Loader
SQL*Loader
• SQL*Loader ( SQLLDR )是 Oracle 的高速批 量数据加载工具,可用于从多种平面文件格式 向Oracle数据库加载数据。它可以在极短的时 间内加载数量庞大的数据。
• 两种工作模式:
– 传统路径(conventional path)模式:SQLLDR使 用SQL插入方法来加载数据 – 直接路径(direct path)模式:SQLLDR不使用 SQL,而是直接格式化数据库块
• 一般情况下,把数据从一个环境中传输到 另外一个环境中,需要考虑以下3个方面的 因素:
– 确认数据源; – 指定数据的目标地; – 操纵数据的传输和转换过程;
数据转换过程
• 互操作性是引入引出数据的主要原因。由于环境 不同,所以在引入引出数据的过程中需要转换数 据源中的数据。如果只是映射不同的数据类型, 那么这种转换是简单的;但是,如果需要分解或 组合数据,那么转换过程就可能是复杂的。常见 的数据转换方式如下:
数据传输技术
概述
• 为了方便地使用异构数据环境中的数据, Oracle Database 10g提供了一整套的数据 传输和数据转换的工具。使用这些工具可 以高效地完成所需要的数据传输和数据转 换。另外,在决策支持系统中,需要不断 地把数据库中的数据加载到数据仓库中, 这些操作也离不开数据传输和数据转换的 工具。
– – – – – – 改变数据的格式; 转换和映射数据; 保持数据的一致性; 校验数据; 调度数据的转换过程; 在异构环境中转换数据。
数据泵(Data Pump)
数据泵的体系架构
• Oracle Database 10g系统引入了Data Pump(数据泵)体系架构。在以前的版本中, 使用imp命令引入数据或使用exp命令引出 数据。现在,可以使用Oracle Data Pump 来代替这些引入引出数据的命令。在Oracle Database 10g系统中,imp命令和exp命令 依然可以使用,且Oracle Data Pump可以 读取exp命令生成的引出数据的文件。
',', by ',', by ',', by ',')
• 数据文件
1,1,1,1000 2,2,1001,2000 3,3,2001,3000 4,4,3001,4000
卸载数据
• 有一件事SQLLDR做不了,并且Oracle也没 有提供任何命令行工具,这就是以 SQLLDR 或其他程序可以理解的格式卸载 数据
为什么传输数据
• 作为数据库管理员,必须理解如何管理数 据,了解如何在应用程序和不同环境之间 引入和引出数据。由于需求的多样性,在 许多环境中都需要移动数据、制作数据的 拷贝、归档历史数据等。 • 传输数据是数据库管理员的日常任务。这 些传输数据的任务既可以是非常简单的, 也可能是非常复杂的。
为什么传输数据
使用Data Pump引出数据
• 在使用expdp之前,应该在数据所在的数据 库中创建一个目录对象。可以使用create directory命令来创建目录,使用grant命令 进行授权。 • 创建目录的原因是使所有与Data Pump相 关的文件都存储在服务器上,而不是存储 在客户机上,这是Data Pump写入文件或 读取文件的位置。
• 不过可以使用一些方法达到这样的目的, 具体可以参考网址 /tkyte/flat/index.ht ml
小结
• 数据泵
• SQL*Loader
expdp命令的新增功能
• 在没有实际向引出文件写入数据时,可以估计expdp命令引出的文件 大小。 • 根据用户需要,既可以悬挂引出作业,也可以重新启动中止的作业。 • 根据用户需要,既可以分离引出作业,也可以附加引出作业。 • 在许多情况下,可以从失败点重新启动失败的作业。 • 在执行引出操作时可以引出粒度更小的对象,例如,可以仅仅引出过 程和函数。 • 可以控制引出操作中使用的线程数量。 • 可以使用两种数据访问方法,即外部表访问法和直接路径访问法,使 用的方法由引出进程自动选择。 • 支持网络模式操作,允许通过网络连接直接加载另外一个数据库。 • 可以控制引出对象的版本。这种功能使得用户可以从一个Oracle数据 库中引出数据,且保证这些引出的数据与低版本的Oracle数据库兼容。 但是,这种功能只能适用于Oracle Database 10g以后的功能,以前 的功能则不适用。 • 可以选择引出数据的方法:只引出元数据(例如,创建表或索引的语 句);只引出数据库中的数据;同时引出数据库的元数据和数据。
从数据文件加载的方式
• 控制文件
LOAD DATA INFILE 'c:\data.txt' APPEND INTO TABLE SalGrade( SGID number terminated by SGGRADE number terminated SGLoSal number terminated SGHiSal number terminated
数据泵的体系架构
• Oracle Data Pump 提供了在两个数据 库之间移动数据的 方法。在Oracle Data Pump体系结 构中提供了许多组 件。
Data Pump引出数据
• 与Oracle 9i中的exp命令相比,Oracle Database 10g系统中的expdp命令有了很大 的变化,增加了许多功能。 • 下面首先介绍expdp命令的新增功能,然后 介绍如何使用expdp命令。最后,通过示例 讲述加何执行操作。