Sql server 使用对目标数据的查询从Microsoft SQL Server导出数据

Sql server 使用对目标数据的查询从Microsoft SQL Server导出数据,sql-server,sql-server-2016,sql-scripts,Sql Server,Sql Server 2016,Sql Scripts,我知道如何生成脚本来脚本插入行,以便备份一些数据。我想知道是否可以编写一个查询(以WHERE子句为例)来针对一个非常大的表中非常小的数据子集 最后,我希望生成一个脚本,该脚本包含一系列插入行,并允许插入主键值(通常不允许插入)。如果我正确阅读了您的需求,您实际需要做的只是在表中复制一些数据。我通常通过使用选择进入来实现这一点。这也将为您生成目标表 CREATE TABLE myTable (Column1 int, column2 NVARCHAR(50)) ; INSERT INTO myTa

我知道如何生成脚本来脚本插入行,以便备份一些数据。我想知道是否可以编写一个查询(以WHERE子句为例)来针对一个非常大的表中非常小的数据子集


最后,我希望生成一个脚本,该脚本包含一系列插入行,并允许插入主键值(通常不允许插入)。

如果我正确阅读了您的需求,您实际需要做的只是在表中复制一些数据。我通常通过使用
选择进入
来实现这一点。这也将为您生成目标表

CREATE TABLE myTable (Column1 int, column2 NVARCHAR(50))
;
INSERT INTO myTable VALUES (1, 'abc'), (2, 'bcd'), (3, 'cde'), (4, 'def')
;
SELECT * FROM myTable
;
SELECT 
    *
INTO myTable2
FROM myTable WHERE Column1 > 2
;

SELECT * FROM myTable;
SELECT * FROM myTable2;

DROP TABLE myTable;
DROP TABLE myTable2;
myTable将包含以下内容:

Column1 column2
1   abc
2   bcd
3   cde
4   def
myTable2将只包含最后2行:

Column1 column2
3   cde
4   def
编辑:刚刚看到了关于主键值的部分。这是否意味着您希望将数据插入到现有表中,而不仅仅是创建备份集?如果是这样,您可以在
上发出
SET IDENTITY\u INSERT myTable2以允许此操作


但是,请注意,如果您尝试插入的id值已经存在,则可能会导致问题

SSMS不允许您对表中的特定行进行INSERT查询。您可以使用存储过程来实现这一点。例如:

EXECUTE dbo.GenerateInsert @ObjectName = N'YourTableName'
,@SearchCondition='[ColumnName]=ColumnValue';
对于
@SearchCondition

假设您的表名为
Table1
,其中包含列
Salary&name
,您希望为那些薪资高于1000且名称以
Mr.
开头的人插入查询,那么您可以使用以下方法:

EXECUTE dbo.GenerateInsert @ObjectName = N'Table1'
,@SearchCondition='[Salary]>1000 AND [Name] LIKE ''Mr.%'''
,@PopulateIdentityColumn=1;

你到底在问什么?如果您知道如何为所有行生成脚本,为什么不使用其中的一个子集,或者更改为所有行生成脚本的过程。您还没有告诉我们您是如何做到这一点的,那么我们如何解释如何更改该过程?对不起,我以为只有一种方法可以“生成脚本”。我知道如何在
MS SQL Server Management Studio中使用它的唯一方法是
任务
生成脚本
。据我所知,没有选择“使用其中的一个子集”。不管我是怎么做的,尽管我的最终目标(最后一句)是一样的,我需要指导。谢谢感谢SchmitzIT回答您的最后一个问题(
设置标识\u在
上插入我的表2),这正是我所说的。我将使用它将数据从一个数据库恢复到另一个数据库。src数据库是一个旧的备份,dest是一个错误更改的数据库。因此,ID根本不会成为问题,因为它们不再存在于dest DB中。至于我想做的事情,我希望有一个简单的方法来使用创建脚本的普通方法,但是在SRC结果中添加<<代码> 。谢谢你的解决方案@但是,ArvoBowen目标表是否需要ID?通常,标识列的目的是确保以唯一的方式标识记录。ID本身不应该是添加任何形式的业务逻辑的手段(这就是自然键的用途)。在大多数情况下,ID还用于链接来自其他表的数据。我的情况就是这样。ID在我的情况下非常重要。@ArvoBowen-这是公平的:)我会试一试,看看它是否符合我的要求,谢谢MD。尽管你的例子看起来很混乱。我不确定在变量
@SearchCondition
中应该放什么。你能给他们一些可能使用的例子吗?谢谢啊!!现在我明白了!我还以为那能做点别的。我想这就是将变量传递给存储过程的方式。每天学习新的东西最后一个问题,它能处理多种情况吗?我大约有5英镑需要申请。这个例子行得通吗<代码>执行dbo.GenerateInsert@ObjectName=N'Table1',@SearchCondition='[Salary]>1000和[Name]如“Mr.%”和[Name]如“Mr.%”
我总是在投票前验证答案是否有效(我已经这样做了),或者标记答案。我一检查完就给你那个绿色的复选标记最后一件事。根据我最初的问题,我还要求插入主键值,就像@SchmitzIT所说的
SET IDENTITY\u插入表1一样。这也能解释这一点吗?目前它只是忽略我的主键列。