使用标头导出数据时出错 - SQL Server

时间:2017-10-10 06:57:18

标签: sql sql-server

我使用以下脚本从表中导出数据,这完全正常。

declare @sql varchar(8000)
select @sql = 'bcp "Select * from [CV18].dbo.ZMM002" queryout D:\Share\Vendor_portal_Pending_IBD\bcptest.txt -c -t^| -T -S'+ @@servername
exec  master..xp_cmdshell @sql

但我想为它添加标题。我已经找到了一种方法来使用带有标题名称的UNION ALL。

select 'Counter','External_ID','Delivery_Date','Transport_ID','Bill_of_Lading','Delivery_Item','Material','Delivery_QTY',
'Unit','PO_Number','PO_Item'
union all 
select * from ZMM002

但是如何在我的bcp查询中添加此union all查询?

我收到语法错误,因为我在union all查询中使用单引号('),这会切断外部单引号,即@sql =' '

1 个答案:

答案 0 :(得分:0)

在我看来,最好将此作为后期操作。

导出两个文件,一个带有标题,另一个带有实际数据。然后,使用COPY命令连接这两个文件。

假设您导出到header.txtdata.txt,命令将是

COPY /b "\\path\header.txt"+"\\path\data.txt" "\\path\data.dat"

\\path将成为您的实际路径。

如果要格式化标题SQL,请将qoutes加倍:

SET @sql='select ''Counter'',''External_ID'',''Delivery_Date'',''Transport_ID'',''Bill_of_Lading'',''Delivery_Item'',''Material'',''Delivery_QTY'',''Unit'',''PO_Number'',''PO_Item''';