使用 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