使用Load实用程序在DB2中加载文件

时间:2015-07-02 07:17:51

标签: db2 db2-luw

我有一个.csv文件,逗号分隔(位于C:/)。我正在使用DB2 LOAD实用程序来加载DB2表中CSV文件中的数据。

LOAD CLIENT FROM C:\Users\somepath\FileName.csv of del 
  MODIFIED BY NOCHARDEL COLDEL, insert into SchemaName.TABLE_NAME;

CSV文件有25行。实用程序完成后,我收到了NOCHARDEL的错误消息。我的表已正确加载所有25行。现在,当我尝试在该模式中存在的任何表上执行insert / update / delete语句时,我收到了以下错误。

  

查找错误 - DB2数据库错误:错误[55039] [IBM] [DB2 / AIX64] SQL0290N不允许使用表空间。

请问我是否犯了错误或错过了导致桌子锁定的参数。

在加载文件时,早期发生类似情况,DBA确认有问题的表空间处于“正在加载”状态

3 个答案:

答案 0 :(得分:2)

DB2 LOAD实用程序生成的更改未被记录(其高性能的副作用之一)。如果数据库在加载后立即崩溃,则无法恢复通过重放日志记录而加载的表,因为没有这样的记录。因此,包含已加载表的表空间将自动置于BACKUP PENDING模式,从而强制您备份该表空间或整个数据库以确保其完全可恢复。

您可以为LOAD命令指定一些选项,以帮助您避免将来出现这种情况:

  • NONRECOVERABLE - 此选项不会将表空间置于BACKUP PENDING模式,但正如其名称所暗示的那样,正在加载的表变为不可恢复的崩溃,在这种情况下你唯一的选择就是放弃并重新创建表格。

  • COPY YES - 此选项在加载之前创建表的副本,可用于在发生崩溃时将表恢复到其预加载状态。

    < / LI>

如果您只加载25条记录,我建议您使用IMPORT实用程序 - 它没有这些限制,因为它已完全记录(代价较低,25条记录赢了'重要)。

答案 1 :(得分:0)

谢谢@mustaccio。我插入了6000万行。我使用25作为样本来检查结果。 为了增加另一点,我们后来才知道这是一个已知的DB2错误,它使负载保持正在进行状态(DB2无法确认加载已完成且会话无限期地保持打开状态)并将表空间置于备份中州。 恢复是在表空间处于挂起状态时释放表空间的唯一选项。 根据DB2团队(我们尚未部署和测试),修复包10中已修复此问题。意味着NONRECOVERABLE关键词对我们来说很好

答案 2 :(得分:-1)

您的表格陷入LOAD IN PROGRESS状态的原因是LOAD结束时发生了NOCHARDEL错误。

您是否尝试过重启数据库?这应该重新初始化所有表空间并删除任何流氓状态。

http://www-01.ibm.com/support/docview.wss?uid=swg1IC65395
http://www-01.ibm.com/support/docview.wss?uid=swg21427102