使用 SQL Server Management Studio 为表中的前 100 个值创建脚本

Posted

技术标签:

【中文标题】使用 SQL Server Management Studio 为表中的前 100 个值创建脚本【英文标题】:Create Script for top 100 values from a table with SQL Server Management Studio 【发布时间】:2020-09-21 13:29:39 【问题描述】:

我想用 SQL Server Management Studio 为表中的值生成一个脚本。我只想要前 100 名。我已经找到了一种方法来编写所有内容,方法是转到 Task -> Generate Scripts...

我只选择了数据,但它返回了整个表格:

我只需要前 100 行。有没有办法做到这一点?

谢谢!

【问题讨论】:

为什么还要编写数据脚本?这是某种迁移场景吗? this 可以解决您的问题吗? 为整个表编写脚本并编辑脚本以仅保留 100 行?使用select ... into ...top 100 行复制到另一个表并编写脚本,然后在脚本中编辑表名? 表格行对于脚本来说太大了。我在谈论百万唱片。我只需要前 100 个。 所以您问的是如何使用特定工具编写太大而无法处理的 脚本?这将排除我将“第一”100 行复制到单独的表并编写 that 表的第二个建议。 查询应该是什么样子?脚本看起来像这样,但要大得多:USE [DB] GO INSERT [dbo].[Person] ([name], [surname] ) VALUES ('peter', 'mcdonald') GO GO INSERT [dbo].[Person] ([name], [surname] ) VALUES ('person2', 'mcdonald') GO GO INSERT [dbo].[Person] ([name], [surname] ) VALUES ('person3', 'mcdonald') GO GO INSERT [dbo].[Person] ([name], [surname] ) VALUES ('person4', 'mcdonald') GO 【参考方案1】:

如果您想在第一步中为 TOP 100 记录集生成一个 INSERT 脚本,并在第二步中执行生成的脚本,您可以试试这个:

DROP TABLE IF EXISTS #source;
DROP TABLE IF EXISTS #target;

CREATE TABLE #source ( value1 INT, value2 VARCHAR(100) );
CREATE TABLE #target ( value1 INT, value2 VARCHAR(100) );

INSERT INTO #source
VALUES (10, 'A100'), (10, 'A101'), (10, 'A102'), (10, 'A103'), (20, 'B100'), (20, 'B101')

-- STEP 1: GENERATE SCRIPT

SELECT TOP 3 sql = 'INSERT INTO #target(value1, value2) VALUES' + '(' + CAST(value1 AS VARCHAR(100)) + ', ''' + value2 + ''');'
FROM #source
ORDER BY value2 DESC

-- STEP 2: EXEC GENERATED SCRIPT

INSERT INTO #target(value1, value2) VALUES(20, 'B101');
INSERT INTO #target(value1, value2) VALUES(20, 'B100');
INSERT INTO #target(value1, value2) VALUES(10, 'A103');

-- RESULT:

SELECT * FROM #target;

如果您要处理很多列,则转换和重转换为 VARCHAR 可能会让人筋疲力尽。 如果不需要创建临时脚本,这样会更容易:

INSERT INTO #target(value1, value2)
SELECT TOP 3 value1, value2 FROM #source;

【讨论】:

这可能是一种解决方案,但编写超过 40 列的表格将是一项艰巨的工作...... 我想大多数人的目标是避免编写所有强制转换、逗号和转义引号。

以上是关于使用 SQL Server Management Studio 为表中的前 100 个值创建脚本的主要内容,如果未能解决你的问题,请参考以下文章

使用 SQL Server Management Studio 连接到 SQL Server

如何使用 SQL Server Management Studio (2008) 在 SQL Server Compact Edition 中创建列

SQL Server Central Management System

怎样使用SQL Server Management Studio

怎样使用SQL Server Management Studio

SQL server management studio的基本使用