【发布时间】:2019-04-29 09:16:01
【问题描述】:
我想在查询中自动将 SQL 表导出到 CSV 文件。我已经完成了将 SQL 表导出到 .CSV 但输出是 TAB 分隔的文件并且没有列标题。 如何使输出逗号分隔并带有列标题?
请参阅下面的有效查询,但没有逗号分隔符和列标题。
DECLARE @cmd NVARCHAR(4000)
DECLARE @pathAndFileName NVARCHAR(MAX)
DECLARE @result INT
SET @pathAndFileName = 'C:\test.csv'
SET @cmd = 'bcp " SELECT * from testdb.dbo.test_table " queryout "'
+ @pathAndFileName + '" -w -T -t -S Servername\SQLExpress; '
EXEC @result = xp_cmdshell @cmd
SELECT @result
【问题讨论】:
-
-t,用于逗号分隔符,-t只选择默认值,即制表符分隔 -
可能还值得注意的是,BCP 没有导出列标题的选项,但是有很多技巧可以做到这一点,通常涉及在查询中添加
UNION,并且对值进行硬编码,或者从sys.columns等中提取它们。
标签: sql-server tsql bcp