【问题标题】:How can I export/import subset data from/to Oracle Database?如何从/向 Oracle 数据库导出/导入子集数据?
【发布时间】:2018-06-29 00:42:05
【问题描述】:

我想知道如何从 Oracle 数据库中删除大量记录,以便为开发人员的笔记本电脑创建更轻量级的数据库。

我们的目标是减少来自不同生产环境的导出,不排除实体,而是减少每个表中保持参照完整性的记录数。

周围有工具/脚本吗?

我还想知道将副本数据库上的所有 FK 转换为“删除级联”并从关系层次结构顶部的实体中删除记录子集是否可以完成这项工作。

有什么建议吗?

【问题讨论】:

  • 您可以导入最少的数据或特定表中的数据?
  • 也许......参照完整性呢?您是否建议为任何单个表编写脚本?你能详细说明一下吗?
  • 我认为他们可能会建议将expdpCONTENT=METADATA_ONLY 一起使用。您还可以使用带有 INCLUDE 子句的 DATA_ONLY 导出来跟踪它,以仅包含您的参考/验证表数据。
  • @Max 我问这个问题是为了了解你想要什么。请具体,这将有助于回答。
  • 从您的数据库中生成您在开发中需要的所有创建表、过程、函数或其他对象,然后您可以在您的开发数据库中运行它,用于您想要导入到开发中的记录数据库,您可以将它们作为 INSERT 脚本从数据库中导出。您可以使用 SQLDeveloper 生成脚本

标签: oracle import export impdp expdp


【解决方案1】:

使用Jailer,您可以将数据导出到 SQL 脚本,该脚本可以遍历外键约束以包含维护参照完整性所需的所有数据。

http://jailer.sourceforge.net

【讨论】:

    【解决方案2】:

    如果您想从/向数据库导出/导入限制对象,那么您可以EXCLUDE那些您不想成为转储一部分的对象。

    您可以通过指定对象类型和对象名称来排除要导出/导入的任何特定表。

    EXCLUDE=TABLE:"='<TABLE_NAME>'"
    

    ==更新==

    AFAIK,我不知道,如果 Oracle 提供这样的灵活性来导出子集数据,但 Oracle 确实可以选择从 TABLES

    导出分区数据
    TABLES=[schema_name.]table_name[:partition_name] [, ...]
    

    【讨论】:

    • 现在我明白了。好吧,实际上我想要几乎所有的对象......我的目标是所有只有一部分数据的表,所以它可以更轻。但当然数据必须通过 FK 保持一致。
    • @Max 您的意思是,所有对象,但该表中的数据有限?
    • 没错。开发人员需要所有实体进行开发和测试。这就是为什么我正在考虑将 FK 转换为“on delete cacade”并从关系层次结构顶部的实体中删除记录,
    • @Max 我不知道这样的事情,您可以在其中限制数据导入/导出。但是,如果您可以获取所有表的元数据,那么我们确实可以选择
    猜你喜欢
    • 2022-12-06
    • 2013-07-28
    • 2011-09-17
    • 1970-01-01
    • 2016-09-10
    • 1970-01-01
    • 2017-07-22
    • 2021-08-13
    • 2017-08-24
    相关资源
    最近更新 更多