【问题标题】:How to truncate tables during export/import in Oracle?如何在 Oracle 中导出/导入期间截断表?
【发布时间】:2020-05-26 15:29:59
【问题描述】:

我经常导出完整的 Oracle 数据泵。但是,有 3 个表往往非常大并且(对我而言)有无用的数据。
在进行转储之前,我无法截断表,但我也不希望数据文件变得臃肿。 (这些表可能占用多个 GB)
目前,我在导出或导入期间排除了这些表:

expdp full=y exclude=table:\"IN \(\'tONE\',\'tTWO\',\'tTHREE\')\" ...

但是我必须稍后重新创建表...
是否可以完全导出和/或导入数据泵,除了我只想要表定义而不是内容的那 3 个表?

【问题讨论】:

    标签: oracle import export


    【解决方案1】:

    我会分两步完成,即生成两个导出文件:

    • 你已经在做的一个 - 带有数据的表格
    • 另一个使用content=METADATA_ONLYexpdp参数

    【讨论】:

      【解决方案2】:

      您可以为要排除其数据的每个表添加data filter,条件始终为 false:

      query='"tONE":"where 1=0","tTWO":"where 1=0","tTHREE":"where 1=0"'
      

      如果您使用的是参数文件,则不需要单引号:

      query="tONE":"where 1=0","tTWO":"where 1=0","tTHREE":"where 1=0"
      

      我将表名用双引号括起来只是因为您的原始版本这样做了,并且暗示混合大小写(带引号的标识符)名称;如果不是,那么这些也可以省略。

      作为一个快速演示,从 HR 模式中导出几个表:

      expdp hr/hr full=N tables='countries,departments,jobs' \
        query='countries:"where 1=0",hr."DEPARTMENTS":"WHERE 1=0"'
      

      日志显示:

      . . exported "HR"."JOBS"                                 7.109 KB      19 rows
      . . exported "HR"."COUNTRIES"                            5.906 KB       0 rows
      . . exported "HR"."DEPARTMENTS"                          6.484 KB       0 rows
      

      在 Windows 批处理文件中,这种格式有效:

      query='countries:"where 1=0"','"DEPARTMENTS":"WHERE 1=0"'
      

      ...这可能是我最初应该展示的;所以你需要:

      query='"tONE":"where 1=0"','"tTWO":"where 1=0"','"tTHREE":"where 1=0"'
      

      【讨论】:

      • query 很棒,它适用于导入和导出。但是,我在查询多个表时仍有一点问题。如果我查询多个表,它将无法导入第一个表并正常导入其他表并抛出 ORA-00933:SQL 命令未正确结束。我在 Windows 上,所以我猜 , 不需要转义?
      • @T-Me - 您是在命令行还是在参数文件中设置查询参数;你有没有用单引号括起来的条款?不确定 Windows,在 Linux 中,它喜欢命令行上的单引号,而不是文件中的单引号; Windows 也可能不喜欢它们在命令行上。 (但随后可能需要一些其他方式来转义双引号......)
      • 我在命令行中使用它们(通常在自动生成的 bat 中)并尝试了许多不同的方式来编写它们。用单引号和括号括起来,转义的双引号等等。
      • @T-Me - 终于到了我可以在 Windows 中玩这个的地方;经过一些实验和思考,每个表/过滤器都用自己的单引号括起来。添加了一个有效的示例,我认为您的示例会是什么样子。希望对您有所帮助。
      猜你喜欢
      • 2021-06-24
      • 2015-10-16
      • 2015-04-14
      • 1970-01-01
      • 1970-01-01
      • 2012-05-24
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多