使用 SQL Server Management Studio 从 table 创建前 100 个值的脚本
Create Script for top 100 values from a table with SQL Server Management Studio
我想用 SQL Server Management Studio 只为 table 中的值生成一个脚本。我只想要前 100 个。我已经找到了一种通过转到任务 -> 生成脚本来编写所有脚本的方法...
我只选择了数据,但 returns 整个 table:
我只需要前 100 行。有办法实现吗?
谢谢!
如果您想在第一步中为前 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;
我想用 SQL Server Management Studio 只为 table 中的值生成一个脚本。我只想要前 100 个。我已经找到了一种通过转到任务 -> 生成脚本来编写所有脚本的方法...
我只选择了数据,但 returns 整个 table:
我只需要前 100 行。有办法实现吗?
谢谢!
如果您想在第一步中为前 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;