第7章 数据移动
7.1 数据移动概述
在数据库的使用过程中,经常需要将一个数据库中的数据迁移到另外的一个数据库中。为了实现这种功能,我们可以使用数据库复制技术,这种技术在大多数的关系型数据库中都有相应的实现,不过这种方法对管理的要求较高,而且需要网络的连接。更常用的方法是利用某种类型的外部文件作为中介,将一个数据库中的某个表中的数据导出到一个外部文件中,然后把该文件中的数据导入到另外一个数据库中。
DB2中实现以上功能的主要工具有三个:EXPORT、IMPORT和LOAD。其中EXPORT的功能是将表中的数据导出到外部文件中;而IMPORT和LOAD的功能是将外部文件中的数据导入到一个表中。IMPORT和LOAD的功能类似,但在实现手段上有很大差异,我们将在以下章节中详细阐述。
能够被DB2所支持用作数据移动的中间文件的格式有四种:非定界ASCII码文件(ASCII)、定界ASCII码文件(DEL ASCII)、WSF文件和PC/IXF文件。其特点是:
ASCII:纯文本格式,每个数据列之间中有分隔符,但数据行之间没有分隔符。ASCII文件不能被EXPORT支持。、
DEL:
纯文本格式,数据列之间有分隔符,数据行之间也有分隔符。
WSF:Lotus 1-2-3工作表格式。WSF文件不能被LOAD支持。
PC/IXF:一种非常通用的格式,被多种数据库管理系统所支持。可以用作在异种数据库中进行数据转移。
7.2 EXPORT的功能和使用
EXPORT 用于将一个表或多个表中的数据导出到外部文件中。其命令语法为:
>>-EXPORT TO–filename–OF–filetype—————————->
>—–+—————————+—————————–>
| .-,———–. |
| V | |
‘-LOBS TO—–lob-path—+–‘
>—–+—————————+—————————–>
| .-,———–. |
| V | |
‘-LOBFILE—–filename—+–‘
>—–+———————————–+———————>
| .—————–. |
| V | |
‘-MODIFIED BY—–filetype-mod—+–‘
>—–+————————————–+——————>
| .-,————–. |
| V | |
‘-METHOD N–(—–column-name—+—)–‘
>—–+————————-+——————————->
‘-MESSAGES–message-file–‘
>—–+-select-statement———————————————+>
‘-HIERARCHY–+-STARTING–sub-table-name–+—+—————+-‘
‘-| traversal-order-list |–‘ ‘-where-clause–‘
命令参数:
LOBFILE Filename:
如果表中有LOB类型数据需要被倒出,指定一个或多个文件用于存储LOB数据
LOBS TO lob to path:
如果表中有LOB类型数据需要被倒出,指定一个或多个目录文件用于存储LOB数据,LOBFILE参数指定的文件将存储在该路径下。
MESSAGES message-file:
用于指定在EXPORT过程中生成的警告信息和错误信息的存储文件,如果没有指定,信息将被输出到标准输出(如屏幕)上。
METHOD N column-name:
用于指定在输出文件中每个数据列的名字,如果没有指定,表中的相应列的名字将被使用。EXPORT仅支持N方法。
MODIFIED BY filetype-mod:
指定一些额外的参数。
OF filetype :
指定输出文件的类型。
EXPORT支持定界ASCII码文件、WSF文件和IXF文件格式作为数据导出的中间文件。
select-statement:
利用SELECT语句指定要输出的数据。
TO filename:
指定输出文件的名字。
下面是EXPORT的一个例子:
db2 connect to sample
db2 export to myfile of ixf messages msg
select staff.name, staff.dept, org.location form org, staff,
where org.deptname=staff.dept
在该例中,staff和org中的相应数据将被输出到myfile文件中,该文件为PC/IXF格式。
注意事项:
在做EXPORT之前,首先要连接到相应的数据库上。
因为要对表或视图(EXPORT支持对视图进行操作)进行SELECT操作,执行EXPORT的用户至少要有相关表或视图上的SELECT权限。
如果使用PC/IXF文件,文件中将包含表中的索引定义。
可以通过DB2 Connect将主机上的数据导出到外部文件中。
7.3 IMPORT的功能和使用
IMPORT可以被看作是EXPORT的逆过程,用于将数据从外部文件中导入到数据库之中。IMPORT的语法如下:
>>-IMPORT FROM-filename-OF–filetype———————->
>-+—————————–+———————>
| .-,———–. |
| V | |
‘-LOBS FROM—–lob-path—+–‘
>-+———————————–+—————>
| .—————–. |
| V | |
‘-MODIFIED BY—–filetype-mod—+–‘
>-+—————————————————————————————–+>
| .-,—————————. |
| V | |
‘-METHOD-+-L–(—–column-start–column-end–+-)-+———————————–+-+-‘
| | .-,—-. | |
| | V | | |
| ‘-NULL INDICATORS–(—–n—+—)–‘ |
| .-,————–. |
| V | |
+-N–(—–column-name—+—)————————————————-+
| .-,——————. |
| V | |
‘-P–(—–column-position—+—)———————————————‘
>-+—————–+—+——————+—————->
‘-COMMITCOUNT–n–‘ ‘-RESTARTCOUNT–n–‘
>-+————————-+——————————->
‘-MESSAGES–message-file–‘
>-+–+-INSERT———+–INTO–+-table-name–+——————————+-+—————-+>
| +-INSERT_UPDATE–+ | | .-,—————-. | | |
| +-REPLACE——–+ | | V | | | |
| ‘-REPLACE_CREATE-‘ | ‘-(—–insert-column—+—)–‘ | |
| ‘-| hierarchy description |——————–‘ |
| |
‘-CREATE–INTO–+-table-name–+——————————+———-+-| tblspace-specs |-‘
| | .-,—————-. | |
| | V | | |
| ‘-(—–insert-column—+—)–‘ |
‘-| hierarchy description |–+-AS ROOT TABLE———-+-‘
‘-UNDER–sub-table-name–‘
>-+——————————————–+———–><
‘-DATALINK SPECIFICATION–| datalink-spec |–‘
命令参数:
filename:
指定要从哪个文件中进行数据导入。
LOBS FROM lob-path:
如果有LOB数据需要导入,指定包含LOB数据的文件所在路径。
OF filetype :
指定输出文件的类型。
IMPORT支持上述提到的四种文件格式(ASCII、DEL ASC、WSF、PC/IXF)。
MODIFIED BY filetype-mod
指定一些额外的参数。
COMMITCOUNT n:
每隔n条记录进行一次提交。避免在出现错误以后,需要重新导入所有的数据。比如,设定n为100,则系统每隔100条记录就进行一次提交,将导入的数据保存下来。如果在导入到531条记录时出现了错误,因为已经保留了500条记录,只需要从第501条记录开始导入就可以了。
RESTARTCOUNT n:
一般用于在IMPORT过程中失败了以后,定义重新进行IMPORT的起点。对上一个例子而言,n应设定为501。
MESSAGES message-file:
用于指定在IMPORT过程中生成的警告信息和错误信息的存储文件,如果没有指定,信息将被输出到标准输出(如屏幕)上。一般来说,在IMPORT完成后,应该检查该文件中的信息。其中比较重要的信息包括,一共要导入的数据行数目、成功导入行的数目以及被拒绝导入行的数目。
INSERT:
将导入的数据行插入到表中,不对表中原来的数据作更改。INSERT_UPDATE:
将导入的数据行插入到表中,如果导入的数据与表中原来的数据有冲突,则以导入的数据为准,进行更改。
REPLACE:
将原来表中所有的数据删除之后再进行导入。
CREATE:
如果被导入的表不存在,则先创建表,然后进行导入。只有PC/IXF文件格式支持这种导入模式。
REPLACE_CREATE:
如果被导入的表存在,则将表中的数据删除后再进行导入。如果被导入的表不存在,则先创建表,然后进行导入。只有PC/IXF文件格式支持这种导入模式。
下面是一个IMPORT的例子:
db2 connect to musicdb
db2 import from artexprt of ixf messages artmsg
create into artists in <tablespace>
index in <indextablespace>
long in <longtablesapce>
在该例中,artexprt文件的数据被导入到表artists中,这个表在IMPORT之前并不存在,系统将根据artexprt文件的格式创建表后,再进行数据导入。
注意事项:
在做IMPORT之前,首先要连接到相应的数据库上。
因为要对表或视图(IMPORT支持对视图进行操作)进行修改操作,执行EXPORT的用户至少要有相关表或视图上的相关权限(依据导入模式的不同而不同)。比如,使用INSERT模式,至少要有相应表上的INSERT权限;如果使用CREATE模式,则需要数据库上的CREATETAB权限。
如果使用CREATE模式,必须使用PC/IXF文件进行数据导入。
可以通过DB2 Connect向主机上的数据库导入数据。
7.4 LOAD概述
LOAD的功能与IMPORT类似,但实现的方式有很大区别。其操作方式更加贴近底层。LOAD会把要导入的数据格式化成数据页,利用并行I/O写入存储介质。在LOAD 过程中,只进行极少量的日志记录,而且不进行约束检查。因此,LOAD导入的速度要比IMPORT快很多,尤其是数据量比较的的时候,LOAD的速度优势十分明显。
LOAD可以从三种格式的文件进行数据导入,分别是非定界ASCII码文件、定界ASCII
以下文章点击率最高
Loading…