【问题标题】:Export tables (objects and data) based on select criteria根据选择条件导出表(对象和数据)
【发布时间】:2011-08-30 19:35:10
【问题描述】:

我有一些数据

SELECT [field names] FROM [several joined tables] WHERE [some criteria is true]

我想将此数据导出到另一个数据库,保持表结构完整,但仅使用符合 WHERE 条件的行填充它们。

因此,如果我有 5 个连接表作为源,我生成的目标表也将是 5 个。但它们只会被通过 WHERE 子句约束的数据稀疏填充。

更简单地说,我有一个包含客户数据的数据库,我想向单个客户发送一个独立的数据库,其中只填充他/她的记录。

我的一些想法是导出整个数据库,然后删除 [条件不正确] 的所有记录,但我认为数据库的引用完整性不会清除所有不需要的记录。

有没有简单或“正确”(又名 SSIS)的方法来做到这一点?

【问题讨论】:

  • 是希望将原始查询条件中定义的内容导出到另一个数据库(扁平数据结构),还是只是为了表明存在一些重要的标准来确定哪些数据元素属于客户,但最终结果需要是仅填充客户 A 数据的数据库副本?

标签: sql sql-server-2008


【解决方案1】:

简单易行的方法就是。

步骤 1. 在新数据库中创建所需的表 (2005/2008) 步骤 1 A. 右键单击​​表 - 将表编写为 - 创建到新查询编辑器窗口。现在在你的新数据库上运行这个脚本。

第 2 步。根据您的条件将数据从旧数据库导出到新数据库。 如果您使用 BIDS SSIS,则可以完成所有步骤。

【讨论】:

  • 谢谢,看起来直截了当的方法就是答案。我将检查 BIDS 方法
【解决方案2】:

您可以使用select into 将行复制到新创建的表中:

select  col1, col2, ...
into    DestinationTable
from    SourceServer.SourceDb.dbo.SourceTable
where   col1 = 'A' and ...

四个部分的名称假定您使用多个 SQL Server,并且您有一个名为 SourceServer 的链接服务器。如果您在同一台服务器上使用两个数据库,只需删除名称中的服务器部分即可。

【讨论】:

  • 谢谢,但 INTO 会将我的所有字段转储到一个目标表中。我需要的是目标表镜像源表。比如说,5 个连接表 - > 5 个等效模式的目标表。希望我很清楚。
  • @LesterDove:您不能在单个 SQL 语句中创建、插入或更新多个表。所以你需要 5 个select into 语句。
猜你喜欢
  • 2022-08-03
  • 2018-09-06
  • 1970-01-01
  • 2016-04-12
  • 2023-03-09
  • 2018-08-21
  • 2023-01-09
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多