我们正在编写一个新的应用程序,在进行测试时,我们将需要一堆虚拟数据。我已经通过使用MS Access将excel文件转储到相关表中添加了这些数据。

每隔一段时间,我们想要“刷新”相关的表,这意味着将它们全部删除,重新创建它们,并运行已保存的MS Access追加查询。

第一部分(删除和重新创建)是一个简单的sql脚本,但最后一部分让我畏缩。我想要一个单独的设置脚本,它有一堆insert来重新生成虚拟数据。

我现在有数据在表格里。从该数据集自动生成一个大的INSERT语句列表的最佳方法是什么?

我能想到的唯一方法是将表保存到excel表格中,然后编写excel公式为每一行创建一个INSERT,这肯定不是最好的方法。

我使用2008 Management Studio连接到SQL Server 2005数据库。


当前回答

不确定,如果我没理解错的话。

如果你有数据在MS-Access,你想把它移动到SQL Server -你可以使用DTS。 而且,我猜你可以使用SQL分析器来查看所有的INSERT语句。

其他回答

GenerateData是一个很棒的工具。对它进行调整也很容易,因为源代码是可用的。一些不错的功能:

用于人名和地名的名称生成器 能够保存生成配置文件(在本地下载和设置后) 能够通过脚本自定义和操作生成 数据的许多不同输出(CSV, Javascript, JSON等)(以防您需要在不同的环境中测试集,并希望跳过数据库访问) 免费的。但如果你觉得软件有用,可以考虑捐赠:)。

sp_generate_inserts的第一个链接非常酷,这是一个非常简单的版本:

DECLARE @Fields VARCHAR(max); SET @Fields = '[QueueName], [iSort]' -- your fields, keep []
DECLARE @Table  VARCHAR(max); SET @Table  = 'Queues'               -- your table

DECLARE @SQL    VARCHAR(max)
SET @SQL = 'DECLARE @S VARCHAR(MAX)
SELECT @S = ISNULL(@S + '' UNION '', ''INSERT INTO ' + @Table + '(' + @Fields + ')'') + CHAR(13) + CHAR(10) + 
 ''SELECT '' + ' + REPLACE(REPLACE(REPLACE(@Fields, ',', ' + '', '' + '), '[', ''''''''' + CAST('),']',' AS VARCHAR(max)) + ''''''''') +' FROM ' + @Table + '
PRINT @S'

EXEC (@SQL)

在我的系统中,我得到了这样的结果:

INSERT INTO Queues([QueueName], [iSort])
SELECT 'WD: Auto Capture', '10' UNION 
SELECT 'Car/Lar', '11' UNION 
SELECT 'Scan Line', '21' UNION 
SELECT 'OCR', '22' UNION 
SELECT 'Dynamic Template', '23' UNION 
SELECT 'Fix MICR', '41' UNION 
SELECT 'Fix MICR (Supervisor)', '42' UNION 
SELECT 'Foreign MICR', '43' UNION 
...

为了获得带有过滤记录的INSERT语句(WHERE QUERY),您可以

右击表脚本表>创建到>新的查询 用temp_table重命名 现在运行 选择到temp_table从你的第一个表,现在你的标准在这里

这样你的临时表将只有你想要的记录, 现在通过运行由@Mike Ritacco with DATA ONLY解释的脚本向导,您将得到确切的插入语句。

这也可以使用Visual Studio完成(至少在2013年版本开始)。

在VS 2013中,也可以过滤insert语句所基于的行列表,据我所知,这在SSMS中是不可能的。

请执行以下步骤:

Open the "SQL Server Object Explorer" window (menu: /View/SQL Server Object Explorer) Open / expand the database and its tables Right click on the table and choose "View data" from context menu This will display the data in the main area Optional step: Click on the filter icon "Sort and filter data set" (the fourth icon from the left on the row above the result) and apply some filter to one or more columns Click on the "Script" or "Script to File" icons (the icons on the right of the top row, they look like little sheets of paper)

这将为活动窗口或文件的所选表创建(有条件的)插入语句。

Visual Studio 2013:滤镜和脚本

您可以使用SSMS Tools Pack(适用于SQL Server 2005和2008)。它带有一个生成插入语句的特性。

http://www.ssmstoolspack.com/