db2与oracle的全面对比10

7     数据移动

7.1    数据移动概述


在数据库的使用过程中,经常需要将一个数据库中的数据迁移到另外的一个数据库中。为了实现这种功能,我们可以使用数据库复制技术,这种技术在大多数的关系型数据库中都有相应的实现,不过这种方法对管理的要求较高,而且需要网络的连接。更常用的方法是利用某种类型的外部文件作为中介,将一个数据库中的某个表中的数据导出到一个外部文件中,然后把该文件中的数据导入到另外一个数据库中。

DB2中实现以上功能的主要工具有三个:EXPORTIMPORTLOAD。其中EXPORT的功能是将表中的数据导出到外部文件中;而IMPORTLOAD的功能是将外部文件中的数据导入到一个表中。IMPORTLOAD的功能类似,但在实现手段上有很大差异,我们将在以下章节中详细阐述。


能够被DB2所支持用作数据移动的中间文件的格式有四种:非定界ASCII码文件(ASCII)、定界ASCII码文件(DEL ASCII)WSF文件和PC/IXF文件。其特点是:

ASCII:纯文本格式,每个数据列之间中有分隔符,但数据行之间没有分隔符。ASCII文件不能被EXPORT支持。、

DEL
纯文本格式,数据列之间有分隔符,数据行之间也有分隔符。

WSFLotus 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


在该例中,stafforg中的相应数据将被输出到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支持上述提到的四种文件格式(ASCIIDEL ASCWSFPC/IXF)。

MODIFIED BY filetype-mod


指定一些额外的参数。

COMMITCOUNT n


每隔n条记录进行一次提交。避免在出现错误以后,需要重新导入所有的数据。比如,设定n100,则系统每隔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…

     

如果这文章对你有帮助,请扫左上角微信支付-支付宝,给于打赏,以助博客运营

发表评论

您的电子邮箱地址不会被公开。 必填项已用*标注