【问题标题】:How to use imp command for overwrite existing data如何使用 imp 命令覆盖现有数据
【发布时间】:2015-03-25 11:59:22
【问题描述】:

我正在使用imp 命令导入数据库,但在一次之后,我们再次执行imp 命令以便第二次插入数据。我们要删除旧数据并插入新数据。

这是我尝试过的......

请帮助我并建议有助于解决此类问题的特定参数..

感谢和抱歉我的英语..

【问题讨论】:

  • 请说明您是如何调用imp 命令的。

标签: linux oracle oracle-sqldeveloper imp impdp


【解决方案1】:

IMPDP 有参数:TABLE_EXISTS_ACTION = {SKIP |追加 |截断 |替换}

table_exists_action=skip:这表示忽略导入文件中的数据并保持现有表不变。这是默认值,如果您设置 content=data_only,则它不是有效参数。

table_exists_action=append:这表示将导出数据附加到现有表中,保留现有行并从 dmp 文件添加新行。当然,数据列的数量和类型必须匹配才能使用附加选项。就像附加提示一样,Oracle 不会重新使用空闲列表上的任何空间,并且会提高表的高水位标记以容纳传入的行。

table_exists_action=truncate:这表示截断现有表行,保留表定义并替换正在导入的 expdp dmp 文件中的行。要使用此选项,您必须在目标表上没有任何参照完整性(约束)。当现有表列与导入表列匹配时,您使用 table_exists_action=truncate。 truncate 选项不能用于 db 链接或集群表。

table_exists_action=replace:这表示删除整个表并替换导入 dmp 文件中的表定义和行。要使用此选项,您必须在目标表上没有任何参照完整性(约束)。当现有表列与导入表列不匹配时,您使用 table_exists_action=replace。

【讨论】:

  • 我要做的是首先运行一个删除所有表的脚本,然后运行导入。
  • imp 和 impdp 工具不是同一个工具套件的一部分。在某些光照环境(如 CI)中,只有 imp 可用,而 impdp 不是一个选项。
  • Oracle、imp 和 impdp 由 OP 标记。所以我没有看到问题。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-06-26
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-05-16
  • 1970-01-01
相关资源
最近更新 更多