【问题标题】:Plulling a sample of your database - Postgresql提取数据库样本 - Postgresql
【发布时间】:2012-03-02 03:05:27
【问题描述】:

我们有一个半大型数据库,需要很长时间才能在我们的个人开发机器上本地导入。我想知道是否有任何工具可以连接到数据库,进行一些分析并提取数据库样本,同时通过传入的参数保持所有关系。类似 pg_sample --rough_size 1000 --dbhost mydbhost --dbuname uname --dbpword pword 这会创建一个转储,我可以将其导入我的数据库进行测试和开发。但不需要 45 分钟。

谢谢

【问题讨论】:

  • 在保持参照完整性的同时,这将是一项艰巨的任务。考虑一个 1:n 关系,其中表 a 中的一行引用表 b 中的 5000 行 ...
  • 我同意,会的。这就是为什么我希望它已经写好了。 ;) 但是,如果您还可以为其提供一些基类作为开始,并将记录数少于您的 rough_size 值的表中的所有内容都取走。
  • 我会喜欢这样的工具。我可以做梦……

标签: postgresql archive utilities


【解决方案1】:

我写了这样一个工具:https://github.com/mla/pg_sample

来自自述文件:

pg_sample 是一个实用程序,用于从 更大的 PostgreSQL 数据库。输出和命令行选项 非常类似于 pg_dump 备份实用程序(尽管只有 支持纯文本格式)。

生成的示例数据库包括原始的所有表, 维护引用完整性,并支持循环依赖。

【讨论】:

    【解决方案2】:

    我建议您调查pg_dump --format=custompg_restore -j 12custom 格式允许并行恢复(如果需要,可以转储到原始 SQL,因此您不会失去任何功能)。 pg_restore-j 参数使其并行运行还原。这可以提供显着的加速。特别是如果您已经将您的 maintenance_work_mem 调得又大又好。

    由于上面 Erwin 概述的原因,它不会直接解决您提出的问题,并且因为它需要一定程度的知识来表示什么是重要的,什么不是,那根本不在模式中。这会占用开发人员的时间,通常应该在首先构建架构的同时完成。

    【讨论】:

    • 谢谢,我会调查并返回一些数据。
    猜你喜欢
    • 1970-01-01
    • 2021-08-07
    • 1970-01-01
    • 2015-07-21
    • 2014-03-03
    • 1970-01-01
    • 1970-01-01
    • 2016-08-20
    • 1970-01-01
    相关资源
    最近更新 更多