我需要在DB2数据库中的表上加载大量数据。我在使用SQLSetStmtAttr函数用C编写的表上使用CLI加载模式。设置时,Select语句不起作用(表被锁定)。
当数据加载完成时,我正在关闭加载模式。之后,表变为可访问,以便我可以从db2命令行工具(或控制中心)执行select。
但问题是我的C程序在关闭加载模式之前崩溃或失败。该表始终处于锁定状态。我必须放弃表格,之前的所有数据都会丢失。
我的问题是,是否有办法恢复表格?
答案 0 :(得分:0)
DBMS文档是您的朋友。你可以read the description SQL0668N
(或任何其他错误!)来找出代码3的含义,以及如何修复它。
基本上,当LOAD操作失败时,您需要对表执行一些清理 - restart
或terminate
。这可以使用程序外部的LOAD实用程序(例如,LOAD from /dev/null of del TERMINATE into yourtable
不可恢复)来完成,但您也可以以编程方式执行此操作。
通常,您可以使用db2Load()
API执行此操作,并使用相同的RESTART或TERMINATE操作设置传递给piLongActionString
的{{1}}参数的db2LoadStruct
成员。
在使用CLI Load时,您似乎可以将db2Load()
语句设置为相同的SQL_ATTR_LOAD_INFO
,但我不确定这是否真的可以完成加载重启/终止。