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

问题描述 投票:-2回答:1

我必须创建一个包含两个标头的.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
sql sql-server csv export-to-csv
1个回答
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
© www.soinside.com 2019 - 2024. All rights reserved.