【问题标题】:Exporting table data in csv file using SQL Server stored procedure使用 SQL Server 存储过程导出 csv 文件中的表数据
【发布时间】:2015-07-27 08:26:31
【问题描述】:

我有这些要求:

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

注意:此行中的数据不会来自表格。它将是所有正在生成的.csv 的固定标头。

类似这样的:

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

【问题讨论】:

  • 你使用的是sql server 2008、2008R2还是2012???您标记了所有这些都没有帮助。
  • 你可以通过运行 xp_cmdshell + bcp 来做到这一点,并通过从不同的文件复制它来处理标题,但我不认为这是你应该在 SQL Server 过程中做的事情
  • 感谢#JamesZ 的回复,但我正在寻找一些不使用 xp_cmdshell 的解决方案。

标签: sql-server sql-server-2012


【解决方案1】:

假设date 是一个正确的datetimecolumn,下面的过程至少会为这个名为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 的回复,但这无济于事,因为它会显示如上所示的输出。它只向我显示最后一列和标题。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多