2017-10-10 68 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'''; 
相關問題