从SQL Server表生成INSERT语句

时间:2012-11-22 02:00:03

标签: sql sql-server sql-server-2005

我有一个包含330万条记录的表,并且不希望将所有内容从dev复制到prod(在客户端控制的计算机上,并且无法使链接服务器正常工作)。

我只想复制300个左右的这些记录。如何生成300个插入语句?

我想要插入的选择SQL是:

select * from data where ID > 9000;

我想要一个打印出所有INSERTS的查询,以便我可以在生产盒上复制并运行它。

2 个答案:

答案 0 :(得分:2)

我看到你标记了你的帖子SQL-Server-2005,这太糟糕了,因为2008版本有一个向导工具。

您可以使用连接字符串构建插入语句。

如果field1是字符串,则field2是数字:

select 'insert into data (field1, field2) values('' || field1 || '', ' || char(field2) ||');' from data where ID < 9000;

显然,如果您有很多列,考虑到字符串需要引号,这可能会非常耗时。您可能还必须使用char()转换数字列。

那应该给你一个insert语句列表,如下所示:

insert into data (field1, field2) values('A', 10);
insert into data (field1, field2) values('B', 20);
insert into data (field1, field2) values('C', 30);

也许这不是最优雅的方式,但它有效。

答案 1 :(得分:-1)

insert into dev.data
select top 300 * from prod.data where ID > 9000;
如果您想要或必须(或因为自动增加列)

,请命名您的列

insert into dev.data (col1, col2, col3)
select top 300 col1, col2, col3 from prod.data where ID > 9000;