【问题标题】:Extract 2% data of SQL Server database提取 SQL Server 数据库的 2% 数据
【发布时间】:2010-08-13 07:13:55
【问题描述】:

我们的生产数据库大小为 25Gb(大约)并且有 700 个表,我只想为本地数据库中的每个表导入大约 2% 的数据用于开发/测试目的...(数据应该以应该保留外键约束的方式)???

您的 cmets/建议将受到热烈欢迎!!!

【问题讨论】:

  • 只有一小部分数据有什么特殊原因吗?在某些时候,您需要对全部数据进行测试,否则您的测试将无效。
  • 过去经常这样做 - 例如。如果 Dev 在本地机器上只有 SQL Express(4GB 限制),或者如果在不相关的表上发生了新的开发。但是 Y 需要通过完整的数据库通过 QA。

标签: sql-server sql-server-2008 import


【解决方案1】:

您会发现没有完全自动化的方法可以做到这一点。需要您的数据库的结构和业务规则来确定如何减少数据。

我建议您遍历具有良好数据分布的最高级别的表,从中挑选一些并从那里开始工作。

为了实际执行数据导入/导出。我实际上会考虑备份和复制数据库,然后运行一堆删除语句,直到它达到您所需的大小。然后重新组织,收缩,再次备份到本地恢复。

【讨论】:

    【解决方案2】:

    按照 Robin 的说法,删除比编写选择性插入脚本要容易得多

    如果您有 RI 并且没有级联删除,则可以使用嵌套条件轻松向后工作

    以这种方式开始......

    1

    delete from table1 where table1PK IN
    (somecriteria for table1 deletion)
    

    2

    delete from table2 where table2PK in
    (select table2PK from table2 where
    table1PK in (somecriteria for table1 deletion) -- same as above
    ) 
    

    -- etc ... 继续在树下嵌套

    但是当你来运行删除显然你需要将删除顺序反转为

    N .. 2 .. 1

    这对于 700 个表来说仍然需要大量工作,但通常大多数数据都在几个表中 - 您只需要关注大表吗?

    HTH

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2014-04-09
      • 2023-03-06
      • 2014-02-16
      • 1970-01-01
      • 1970-01-01
      • 2012-03-13
      • 1970-01-01
      相关资源
      最近更新 更多