繁体   English   中英

如何使用SQL Server从远程数据库导出查询结果为CSV?

[英]How export query result as CSV from a remote database with SQL Server?

我正在远程数据库上执行以下查询:

DECLARE @SQL varchar(max) = 
'SELECT ts, value
   FROM history
  WHERE name = ''SOME_ID''

EXEC (@SQL) AT SOME_LINKED_SERVER

所以预期的输出是这样的:

ts       value
----------------
ts1     value1
ts2     value2
…      …

我正在为近100个不同的名称执行此查询,并且我愿意为每个输出保存不同的CSV。 我知道我可以通过单击查询输出上的右键并选择“将结果保存为...”来手动完成,但这需要太长时间,特别是因为每个查询大约需要10分钟才能完成。

所以我想自动执行此操作,使程序在获取数据后导出所有不同的CSV。 我的想法是通过一系列名称循环搜索,执行查询并将输出导出为CSV。

我怎样才能做到这一点? 在尝试循环遍历数组之前,我已经在努力为单个查询结果输出CSV。

为什么一次只能使用一个名称:

SELECT [ts], [value], [name]
FROM [SOME_LINKED_SERVER].[database_name].[dbo].[history] H (NOLOCK)
WHERE [name] IN (<name list>)

如果要将结果存储在本地端,则将数据插入本地表并在其中处理数据。 像这样:

SELECT [ts], [value], [name]
INTO [local_history]
FROM [SOME_LINKED_SERVER].[database_name].[dbo].[history] H (NOLOCK)
WHERE [name] IN (<name list>)

SELECT * FROM [local_history] -- WHERE [name] = 'SOME_ID'

然后导出,或者使用“将结果另存为...”,或者将结果复制并粘贴到Excel中,然后执行另存为...(F12)。

更好的是:如果安装了SSIS,请使用它来构建运行查询的包,并为您进行导出。 如果归结为SSIS,SSIS甚至可以遍历名称列表。 如果您没有安装SSIS,请安装它,它随SQL Server一起提供。 SSIS可以完全自动化这个过程。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM