0

我需要在 DB2 数据库中的表上加载大量数据。我在使用 SQLSetStmtAttr 函数用 C 编写的表上使用 CLI 加载模式。Select 语句在设置时不起作用(表被锁定)。

当数据加载完成时,我正在关闭加载模式。之后,该表变得可访问,以便我可以从 db2 命令行工具(或控制中心)执行选择。

但问题是我的 C 程序在关闭加载模式之前崩溃或失败。该表始终处于锁定状态。我必须删除表,所有以前的数据都丢失了。

我的问题是是否有办法恢复表?

4

1 回答 1

0

DBMS 文档是您的朋友。您可以阅读(或任何其他错误!)的描述SQL0668N了解原因代码 3 的含义以及如何修复它。

基本上,当 LOAD 操作失败时,您需要对表执行一些清理——要么restartterminate它。这可以使用程序外部的 LOAD 实用程序来完成(例如,LOAD from /dev/null of del TERMINATE into yourtable不可恢复),但您也可以通过编程方式完成。

通常,您将使用db2Load()API执行此操作,并使用相同的 RESTART 或 TERMINATE 操作 设置您传递给piLongActionString的参数的成员。db2LoadStructdb2Load()

看起来您也可以在使用 CLI 加载时将SQL_ATTR_LOAD_INFO语句设置为相同db2LoadStruct,但我不确定这是否真的可以完成加载重新启动/终止。

于 2013-10-02T17:48:08.170 回答