正再一次经历db2数据的导入,以前怎么做的只能有浅浅的印象,深深地印象是导入数据时碰上的死锁、暂挂的纠结,怎么解决的呢?居然在网上查到自己自问自答得网页了,无语啊,还是记在网络上好。

主要的 DB2 导入模式有:

  INSERT 将输入数据添加到表中,并且不更改任何现有数据。

  INSERT_UPDATE 将新的输入数据添加到表中,或者用具有匹配主键值的输入数据更新现有的行。

  REPLACE (通过删除数据对象)删除表中的所有现有数据,然后再插入输入数据。

  REPLACE_CREATE 删除现有表中的所有数据,然后再插入输入数据。如果该表不存在,该模式将优先于插入输入数据而创建表。该模式只对 PC/IXF 输入文件有效。

  import 默认情况下,import 工具被绑定为具有读稳定性(RS)隔离级别(有关 DB2 隔离级别:  )。

DB2 load 工具

  DB2 UDB load 工具非常高效地将一个或多个输入文件中的数据写到数据库表中。load 工具也从指定的管道、设备(比如磁带设备)或用户定义游标接受输入。load 工具与 import 工具不一样,不是使用 SQL 将数据写到目标表中;它是直接将格式化的页写到表中,因此比 import 工具要快得多。load 工具从中读取数据的文件可以是几种标准文件格式中的一种,一般是 PC/IXF、DEL 或 ASC。除了要指定从输入文件读取的数据格式之外,还必须提供该文件的名称、目标表的名称,以及执行 load 工具的模式。INSERT 模式添加输入数据到表中,并且不会更改任何现有数据。REPLACE 模式(通过删除数据对象)删除表中的所有现有数据,然后再插入输入数据。(另外还有 RESTART 模式和 TERMINATE 模式。

DB2 加载操作需要数据库连接。其他想要并发访问相同表中数据的应用程序不必与数据库断开连接;如果 LOAD 命令上指定了 ALLOW READ ACCESS 子句,那么这样的应用程序就可以对目标表具有读访问。该访问局限于开始加载操作之前已经存在的数据。另一方面,ALLOW NO ACCESS(默认值)防止并发应用程序访问目标表中的数据。load 工具实现这一点的方法是,请求目标表上的一个超级排他(Z)锁,并在加载操作期间一直持有这个锁(参阅清单 4)。当表持有 Z 锁时,任何并发应用程序都不能读取和更新该表中的数据。