在设置 CLI 装入方式后恢复 DB2 表



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

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

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

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

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

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

通常,您将使用 db2Load() API 执行此操作,并设置传递给 db2Load()db2LoadStruct 参数的piLongActionString成员,使用相同的重新启动或终止操作。

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

最新更新