创建一个具有两个标头的.csv文件

时间:2019-02-27 20:45:32

标签: sql sql-server csv export-to-csv

我必须创建一个具有两个标题的.csv文件

示例

Filename|FileDate|Location|Numberofrows
Testfile|20190101|USA     |1

Firstname|LastName|DOB     |Address1      |Address2
John     |Doe     |20800101|123 4th street|apt 2

我只知道如何创建仅包含一个标题的CSV文件。 谁能告诉我如何从SQL以这种格式创建一个.csv文件。

我正在使用以下方法创建单个标头csv文件

DECLARE @command VARCHAR(4000)    
DECLARE @FileDirectory VARCHAR(1000) = 'c:\test\'    
DECLARE @HeaderFile varchar(255) = 'Headers.txt'    
DECLARE @FileName VARCHAR(255)

SET @FileName = 'TestFile_' + CONVERT(VARCHAR,GETDATE(),112)

SET @command = 'bcp "select * from TESTDB.dbo.TEST_Table"'    
       + ' queryout "' + @FileDirectory + @FileName + '.txt"'    
       + ' -c -q -t, -T  -S'+@@servername

EXEC master..xp_cmdshell @command

SET @command =  'copy "' + @FileDirectory + @HeaderFile + '"+"' + @FileDirectory + @FileName + '.txt"' +  ' "' + @FileDirectory + @filename + '.csv"'

EXEC master..xp_cmdshell @command

SET @command = 'del "' + @FileDirectory + @FileName + '.txt"'

EXEC master..xp_cmdshell @command

1 个答案:

答案 0 :(得分:1)

您已经添加了一个标题。只需使用相同的方法添加另一个即可。

dos COPY命令使用+运算符连接文件。

所以代替这个:

SET @command =  'copy "' + 
    @FileDirectory + @HeaderFile + '"+"' + 
    @FileDirectory + @FileName + '.txt"' +  
    ' "' + @FileDirectory + @filename + '.csv"'

使用此:

SET @command =  'copy "' + 
    @FileDirectory + @HeaderFile + '"+"' + 
    @FileDirectory + @HeaderFile + '"+"' + 
    @FileDirectory + @FileName + '.txt"' +  
    ' "' + @FileDirectory + @filename + '.csv"'

(为清楚起见,在多行中使用

如果遇到问题,可能需要打印@command的内容以进行调试。

它应该像这样出来:

COPY C:\Folder\Header.TXT + C:\Folder\Header.TXT + C:\Folder2\Data.TXT C\OutputFile\FInalFile.CSV