切换到在 bcp 中包含列 headers

Switch to include column headers in bcp

我在文档中没有看到如何在我的 csv-type 输出文件中包含列 headers。我确定这是重复的,但我似乎找不到满足我确切需要的。

这是我的命令:

 bcp "select * from MYDB.dbo.MyTable" queryout "C:\outputfile.csv" -c -t"," -r"\n" -S ServerName -T -k -E

一个标准的众所周知的 hack 是 select 列名 union 都使它们成为查询本身的一部分并导出它,就像这样……

bcp "SELECT 'ColName1','ColName2','ColName3' UNION ALL select ColName1,ColName2,ColName3 from MYDB.dbo.MyTable" queryout "C:\outputfile.csv" -c -t"," -r"\n" -S ServerName -T -k -E

@M.Ali 解决方案完美运行。您还可以使用以下内容更动态地包含列:

DECLARE @ColumnHeader varchar(8000)
SELECT @ColumnHeader =  COALESCE(@ColumnHeader+',' ,'')+ ''''+column_name +'''' 
FROM INFORMATION_SCHEMA.COLUMNS WHERE TABLE_NAME='tblA';