2017-10-10 73 views
0

我正在使用下面的脚本从表中导出数据,该数据工作得很好。使用标题导出数据时出错-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查询中添加此联合所有查询?

我得到一个语法错误,因为我使用单引号(“)在联盟所有的查询,这是切断外单引号,即@sql =”'

+1

你需要逃跑报价。行情通过加倍而逃脱,即' - >''例如'select'Counter','External_ID',....' - >''选择''Counter'',''External_ID'',....'' – Alex

+1

谢谢,这就是我所需要的 – Doosu

回答

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'''; 
相关问题