Import 在DB2中使用导入而不是加载

Import 在DB2中使用导入而不是加载,import,load,db2,Import,Load,Db2,我想准备一个加载实用程序,将数据加载到DB2表中。该表包含包含GENERATEDALWAYS要素集的列 因此,我无法从表中加载已卸载的详细信息 是否可以对设置了GenerateDailways的列的表使用导入 我采取了以下步骤: 1. db2 "export to tbl.txt of del modified by coldel| select * from <schema.table> where col=value" 2. db2 "delete from <schema

我想准备一个加载实用程序,将数据加载到DB2表中。该表包含包含GENERATEDALWAYS要素集的列

因此,我无法从表中加载已卸载的详细信息

是否可以对设置了GenerateDailways的列的表使用导入

我采取了以下步骤:

1. db2 "export to tbl.txt of del modified by coldel| select * from <schema.table> where col=value"
2. db2 "delete from <schema.table> where col=value"
3. db2 "import from tbl.txt of del modified by coldel| allow write access warningcount1 insert into <schema.table>"
1。db2“导出到coldel修改的del的tbl.txt |选择*其中col=value”
2.db2“从col=value的位置删除”
3.db2“从coldel修改的del的tbl.txt导入|允许写入访问警告计数1插入”
“GENERATEDALWAYS”列在导入后具有新值。是否可以使用“导入”填充GENERATEDALWAYS列以获得旧值

感谢您的帮助

谢谢,
Mathew Liju

也许您可以从列中删除“generation”,并在再次导入适当的值后添加它。

您所要求的是不可能的。使用
IMPORT
时,无法覆盖始终生成
的列。正如@Peter Miehle所建议的,您可以更改表,以指定默认情况下生成的列为
,但这可能会中断其他应用程序

您的问题的标题意味着您不想使用
LOAD
实用程序(但在实际问题中您没有提到它)。但是,
LOAD
是将数据写入表并将生成列的值保持在文件中的唯一方法:

db2 "load from tbl.txt of del modified by generatedoverride insert into schema.table"
如果您这样做,请注意:

  • DB2不检查是否与表中的现有行存在冲突。您需要在相关列上定义唯一索引来解决此问题;这将导致DB2删除您刚才在加载的
    delete
    阶段加载的行

  • 如果生成的列使用的是
    IDENTITY
    ,请确保更改该列,以确保将来生成的值不会与刚刚插入表中的行冲突


    • @Ian Bjorhovde已经给了你选择

      IMPORT实际上在后台执行插入操作——即,它首先准备一个带有参数标记的INSERT语句,并使用输入文件中的值作为这些标记

      在SQL快照中,您将看到使用的INSERT语句

      任何在INSERT语句中不可能的操作都不可能使用IMPORT(类似于..)