db2与oracle的全面对比11

码文件和IXF文件格式。LOAD不支持WSF文件作为数据导入文件。

7.5     LOAD的三个阶段

IMPORT相比,LOAD虽然在速度上有明显的优势,但对管理上的要求比较高。LOAD可以分成三个阶段。

第一个阶段叫LOAD阶段。在这个阶段中,数据被导入到表中,如果表上有索引存在,LOAD将按照索引定义搜集索引关键字,然后进行排序。如果有不符合表定义的数据行,LOAD将会把它们放到一个文件(DUMP FILE)中,同时在消息文件(MESSAGE FILE)中进行记录。如果在命令中指定了SAVECOUNT参数,LOAD将每隔一定数目的数据行进行一次保存。

第二个阶段叫BUILD阶段。在这个阶段中,LOAD会利用在LOAD阶段搜集的索引关键字构造索引。如果表上没有索引,这个过程将被忽略。另外,如果表上定义了唯一性约束,LOAD会在这个阶段进行检查。如果有违反唯一性约束的数据行,LOAD将会把它们拷贝到一个特殊的表例外表(Exception Table)中。相应的信息会保存在信息文件(MESSAGE FILE)中。

第三个阶段叫DELETE阶段。在这个阶段中,所有违反唯一性约束的行将被从表中删除。

7.6     LOAD的语法

LOAD的语法比较复杂,我们在这里只介绍一些主要的参数。

 

.-,————-.

V |

>>-LOAD FROM——+-filename-+–+–OF–filetype—————>

+-pipename-+

‘-device—‘

>–+—————————–+————————->

| .-,———–. |

| 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—+—)————————————————‘

 

>–+—————+—+————–+———————->

‘-SAVECOUNT–n–‘ ‘-ROWCOUNT–n–‘

 

>–+——————+—+————————-+——–>

‘-WARNINGCOUNT–n–‘ ‘-MESSAGES–message-file–‘

 

>–+——————————–+—+-INSERT—-+——–>

‘-TEMPFILES PATH–temp-pathname–‘ +-REPLACE—+

+-RESTART—+

‘-TERMINATE-‘

>–INTO–table-name—-+——————————+——->

| .-,—————-. |

| V | |

‘-(—–insert-column—+—)–‘

 

 

>–+——————————————–+————>

‘-DATALINK SPECIFICATION–| datalink-spec |–‘

 

>–+—————————-+—————————->

‘-FOR EXCEPTION–table-name–‘

 

>–+——————————————————————————————+>

| .-YES-. |

‘-STATISTICS–+-+—–+–+-+——————————————————–+-+-+–‘

| | ‘-WITH DISTRIBUTION–+——————————–+–‘ | |

| | ‘-AND–+——— +–INDEXES ALL–‘ | |

| | ‘-DETAILED-‘ | |

| ‘-+—————————————+——————‘ |

| ‘–+-AND-+—+———-+–INDEXES ALL–‘ |

| ‘-FOR-‘ ‘-DETAILED-‘ |

‘-NO———————————————————————-‘

 

>–+——————————————————————+>

| .-NO—————————————————–. |

+-COPY–+-YES–+-USE ADSM–+—————————+——-+-+-+

| | ‘-OPEN–num-sess–SESSIONS–‘ | |

| | .-,——————-. | |

| | V | | |

| +-TO—–device/directory—+——————-+ |

| ‘-LOAD–lib-name–+—————————+-‘ |

| ‘-OPEN–num-sess–SESSIONS–‘ |

‘-NONRECOVERABLE—————————————————‘

 

>—+—————+—+——————–+—————->

‘-HOLD QUIESCE–‘ ‘-WITHOUT PROMPTING–‘

 

>—–+—————————+—+———————+—>

‘-DATA BUFFER–buffer-size–‘ ‘-CPU_PARALLELISM–n–‘

 

>—+———————-+———————————->

‘-DISK_PARALLELISM–n–‘

 

>—+———————————+———————-><

‘-INDEXING MODE–+-AUTOSELECT–+–‘

+-REBUILD—–+

+-INCREMENTAL-+

‘-DEFERRED—-‘

 

命令参数:

OF filetype


指定导入数据文件的类型。LOAD支持三种文件格式(ASCDEL ASC PC/IXF )。WSF文件格式不被LOAD所支持。

MODIFIED BY filetype-mod


指定一些额外的参数。

SAVECOUNT n

每隔多少数据行进行一次保存。防止在LOAD失败后,还需要从头导入数据。比如,设定n100,则系统每隔100条记录就进行一次提交,将导入的数据保存下来。如果在导入到531条记录时出现了错误,因为已经保留了500条记录,只需要从第501条记录开始导入就可以了。

ROWCOUNT n


只导入前n行记录。比如一个数据文件中包含10000条记录,如果只想导入前1000条记录,指定n1000即可。

WARNINGCOUNT n


LOAD过程中,如果出现n个警告信息后自动停止LOAD过程。

MESSAGE msg-file


用于指定在LOAD过程中生成的警告信息和错误信息的存储文件,如果没有指定,信息将被输出到标准输出(如屏幕)上。一般来说,在LOAD完成后,应该检查该文件中的信息。

INSERT


数据导入的模式,如果原来表中有数据,在不破坏表中数据的情况下进行数据导入。

REPLACE

数据导入的模式,如果原来表中有数据,先将表中的数据清空,然后进行数据导入

RESTART


如果LOAD被意外中止,重新启动LOAD过程。后面章节会详细解释。

TERMINATE


如果LOAD被意外中止,中断LOAD过程。后面章节会详细解释。

FOR EXCEPTION table-name


指定例外表名,用于保存违反唯一性冲突的行。

STATISTICS YES


LOAD过程搜集表上的统计信息

COPY YES|COPY NO|NONREVERABLE

 

7.7    注意事项

IMPORTLOAD在功能上相似,但在实现方式和使用上有很大不同,我们将通过下表将这两中工具进行一下对照。

 

IMPORT 

LOAD 

说明

在导入大量数据时速度较慢

在导入大量数据时速度明显比IMPORT

LOAD是将数据格式化成数据页的形式直接写入数据库

如果使用IXF文件格式,表和索引可以不存在

在导入数据之前,表和索引必须存在

IMPORT可以在导入数据时创建表和索引

支持WSF文件格式

不支持WSF文件格式

 

能够对表和视图进行IMPORT

LOAD的对象必须是表

 

在进行IMPORT时,其他程序能够对表进行存取

在进行LOAD时,其他程序不能对表进行存取

LOAD将导入数据的表所在表空间置为排它状态

导入的所有数据都被日志所记录

LOAD只做极少量的日志

 

IMPORT会激活触发器

LOAD不会激活触发器

 

IMPORT可以使用COMMITCOUNT参数指定每隔一定数目的数据行就进行一次提交,如果IMPORT失败,可以从最后的一次提交点重新开始。

LOAD可以使用SAVECOUNT参数指定每隔一定数目的数据行就进行一次保存,如果LOAD失败,可以从最后的一次提交点重新开始。

 

IMPORT使用的是数据库内部的临时表空间

LOAD使用的是数据库以外的临时空间

 

所有的约束在IMPORT过程中都将被总结

LOAD过程中只检查唯一性约束

LOAD关闭约束检查,需要在LOAD后用SET INTEGERITY消除表上的CHECK PENDING状态

IMPORT过程中,当每一行被导入时,索引关键字被插入到索引中

LOAD过程中,LOADLOAD阶段搜集索引关键字,在BULID阶段统一生成索引

 

如果需要重新搜集统计信息,在IMPORT后使用RUNSTAT工具

如果需要重新搜集统计信息,可以在LOAD后使用RUNSTAT工具,也可以在LOAD过程中进行搜集

LOAD中直接搜集统计信息会延长LOAD所需时间

IMPORT能够被DB2 Connect支持

LOAD能够被DB2 Connect支持

如果要向主机或AS/400上的数据库导入数据,用IMPORT

数据导入文件必须在执行IMPORT的节点上

数据导入文件必须在要导入数据的数据库所在的节点上

 

IMPORT不需要备份

根据复制选项的不同,可能需要进行备份

IMPORT导入的数据在日志中会有记录

以下文章点击率最高

Loading…

     

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

发表评论

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