生成用于导出特定数据的插入脚本

时间:2019-03-07 16:56:42

标签: sql sql-server tsql ssms

我正在执行的任务是将一些数据从一个数据库移到另一个数据库。这两个数据库具有相同的架构,因此我只需要数据。到目前为止,我正在使用SQL Server Management Studio的内置实用程序来生成如下脚本:Right click database -> Tasks -> Generate Scripts,然后按照向导进行操作。我的问题是我的表很大,只需要特定的行。不能在其中包括where子句,因此每次都获得整个表。有什么办法解决吗?

我希望得到的结果类似于生成脚本时SQL Server Management Studio输出的内容,例如:

USE [databaseName]
GO
INSERT [dbo].[table_name] ([column1], [column2], [varCharColumn3], [varCharColumn4], [column5]) VALUES (1, 2, 'varCharValue1', 'varCharValue2', 4)
GO
INSERT [dbo].[table_name] ([column1], [column2], [varCharColumn3], [varCharColumn4], [column5]) VALUES (1, 2, 'varCharValue1', 'varCharValue2', 5)
GO
INSERT [dbo].[table_name] ([column1], [column2], [varCharColumn3], [varCharColumn4], [column5]) VALUES (1, 4, 'varCharValue1', 'varCharValue2', 4)
GO
INSERT [dbo].[table_name] ([column1], [column2], [varCharColumn3], [varCharColumn4], [column5]) VALUES (1, 4, 'varCharValue1', 'varCharValue2', 5)
GO
INSERT [dbo].[table_name] ([column1], [column2], [varCharColumn3], [varCharColumn4], [column5]) VALUES (1, 3, 'varCharValue1', 'varCharValue2', 4)
GO
And so on........

1 个答案:

答案 0 :(得分:0)

-当我写这个问题时,我的一个同事给了我答案。由于在我仍然要问这个问题并自己回答之前,我没有在这里找到它。

这个简单的查询对我有用:

select 'insert into table_name (column1, column2, varCharColumn3, varCharColumn4, column5) VALUES (' + RTRIM(column1) + ', ' + RTRIM(column2) + ', ' + '''' + RTRIM(varCharColumn3) + '''' + ', ' + '''' + RTRIM(varCharColumn4) + '''' + ', ' + RTRIM(column5) + ');' 
from table_name
where 
    column5 = 4
    and column2 = 4

有些事情可能还不清楚:

  • select-part中的某些点上,连续有四个'。这是因为该列中的数据是varchar,并且由于'的转义字符为',因此它迫使我编写''''以在值周围指定'

上述查询的输出如下:

insert into table_name (column1, column2, varCharColumn3, varCharColumn4, column5) VALUES (1, 4, 'varCharValue1', 'varCharValue2', 4);
insert into table_name (column1, column2, varCharColumn3, varCharColumn4, column5) VALUES (2, 4, 'varCharValue1', 'varCharValue2', 4);
insert into table_name (column1, column2, varCharColumn3, varCharColumn4, column5) VALUES (3, 4, 'varCharValue1', 'varCharValue2', 4);
insert into table_name (column1, column2, varCharColumn3, varCharColumn4, column5) VALUES (4, 4, 'varCharValue1', 'varCharValue2', 4);
insert into table_name (column1, column2, varCharColumn3, varCharColumn4, column5) VALUES (5, 4, 'varCharValue1', 'varCharValue2', 4);
insert into table_name (column1, column2, varCharColumn3, varCharColumn4, column5) VALUES (6, 4, 'varCharValue1', 'varCharValue2', 4);
insert into table_name (column1, column2, varCharColumn3, varCharColumn4, column5) VALUES (7, 4, 'varCharValue1', 'varCharValue2', 4);
insert into table_name (column1, column2, varCharColumn3, varCharColumn4, column5) VALUES (8, 4, 'varCharValue1', 'varCharValue2', 4);