2012-05-14 209 views
1

什么是运行select语句的最直接的方式,以便稍后可以将输出插入到SQL中?数据集大小将非常小(可能少于100行)。我意识到有数据库特定的导入/导出工具,但我想知道这是否可以用SQL来完成(加上也许一些Unix命令行)。SQL导入/导出

编辑:

为了澄清,我要救沿线的一组行:

select * from my_table where category='test' 

然后,一段时间后,我想被插回那些匹配的行同一张桌子。我曾假设SQL选择输出将被保存到一个文件中,并且该文件将通过一个sql命令行实用程序重新播放。

+1

你能更具体的文件?一般来说,这个问题大约有50个不错的解决方案(例如串联字符串以直接在SQL中生成INSERT语句)...另外,请指定您正在使用的数据库 –

+1

这非常含糊,但有了更多信息,它可能会一个有价值的问题,所以我希望它不会关闭。要回答,我们需要知道您使用的数据库。另外你为什么试图做到这一点?它是一个表的备份?复制数据等? – Purplegoldfish

+0

将select语句放入表中,然后再插入结果。这可以在任何数据库中使用。但是,特定的语法可能取决于数据库。 –

回答

2

执行此操作的一种方法是通过将某些字符串连接在一起以生成INSERT语句来生成SQL。 会假设你正在使用MSSQL:

SELECT'INSERT INTO Table1(Col1,Col2) VALUES('+CAST(Col1 AS VARCHAR(500))+',' +CAST(Col2 AS VARCHAR(500))+')' FROM Table1 

这不是一个伟大的方式来做到这一点显然因为它不能扩展这么好,但对于小使用它是不是太糟糕,特别是如果你想一个快速的答案。

我不知道你的数据库是如何构建的,但确保你记得检查你插入的数据不会受任何PK/FK约束的影响。

还检查了这个问题:What is the best way to auto-generate INSERT statements for a SQL Server table?

你也可以考虑使用BCP http://msdn.microsoft.com/en-us/library/aa196743(v=sql.80).aspx 用于SQL BCP谷歌会告诉你结果应该是有帮助的负荷。

我知道你想要基于代码的解决方案,但我只是提到你也可以从SQL Management Studio中导出这种数据(假设你正在使用这种数据)。

+0

这正是我想要的,谢谢。 – Kevin

0

我不确定我是否正确理解,但是您想要运行select并将结果插入同一命令的表中?

不知道是否是可以做到的,但我可以认为主要是看起来像你想要的是输出语句:

declare @mytables table 
(
    name varchar(50) 
) 

INSERT INTO @mytables  
output inserted.* 
select name 
from sys.tables 

在这里,你将插入@mytables查询select name from sys.tables的结果,并呈现OUTPUT子句的结果

0

如果数据库是TableA { Id, Column1, Column2 }

SELECT 
    'INSERT INTO [TableA] ([Id], [Column1], [Column2])' 
    + VALUES (' + [Id] + ', ''' + [Column1] + ''', ''' + [Column2] + ''')' 
FROM TableA 

结果将是:

INSERT INTO [TableA] ([Id], [Column1], [Column2]) VALUES (1, 'Value1', 'Value2') 
INSERT INTO [TableA] ([Id], [Column1], [Column2]) VALUES (2, 'Value11', 'Value22') 

然后你可以将结果复制到