使用SQL Server存储过程将表数据导出为CSV文件

3

我有以下需求:

  1. 使用存储过程将表格数据导出为 .csv 文件。
  2. .csv 文件中的第一行将是自定义标题。

注意:此行中的数据不会来自表格。它将成为生成的所有 .csv 文件的固定标题。

类似于以下内容:

Latest price data:
product1;150;20150727
product2;180;20150727
product3;180;20150727

你在使用SQL Server 2008、2008R2还是2012?你标记了所有版本,这并没有帮助。 - CeOnSql
你可以通过运行xp_cmdshell + bcp来实现这一点,并通过从不同的文件中复制标题来处理它,但我认为这不是你应该在SQL Server过程中执行的操作。 - James Z
感谢JamesZ的回复,但我正在寻找一些不使用xp_cmdshell的解决方案。 - DevX
1个回答

0
假设date是一个合适的datetime列,以下过程至少可以为名为prodtbl的表完成此任务:
CREATE proc csvexp (@header as nvarchar(256)) AS
BEGIN
 SELECT csv FROM (
  SELECT prod,date,prod+';'+CAST(price AS varchar(8))+';'
        +replace(CONVERT(varchar,getdate(),102),'.','') csv
  FROM prodtbl
  UNION ALL
  SELECT null,'1/1/1900',@header
 ) csvexp ORDER BY prod,date
END

命令

EXEC csvexp 'my very own csv export'

然后将生成以下输出:

my very own csv export
product1;150;20150727
product2;180;20150727
product3;180;20150727

实际将此输出写入.csv文件的部分仍有待完成...


感谢cars10的回复,但这并没有帮助,因为它将显示如上所示的输出。它只显示了最后一列和标题。 - DevX

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接