SQL导入/导出

时间:2012-05-14 14:05:34

标签: sql

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

编辑:

为了澄清,我想在以下行中保存一组行:

select * from my_table where category='test'

然后,一段时间后,我希望将那些匹配的行插回到同一个表中。我假设SQL select输出将保存到文件中,并且该文件将通过sql命令行实用程序重新播放。

3 个答案:

答案 0 :(得分: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导出这种数据(假设您正在使用它)。

答案 1 :(得分:0)

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

不确定是否可以完成,但我认为大多数看起来像你想要的是OUTPUT语句:

declare @mytables table
(
   name varchar(50)
)

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

在这里,您要在@mytables中插入查询select name from sys.tables的结果,并使用OUTPUT子句显示结果

答案 2 :(得分: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')

然后您可以将结果复制到文件