2016-08-02 63 views
0

我創建了一個批處理文件,它使用bcp從一系列SSMS查詢中輸出數據。批量使用bcp的多行SQL查詢

出於可讀性和維護,我想要設定每個查詢作爲變量跨越多個線,其中我的BCP呼叫中引用,例如:

SET myQuery = 
"select a, b, c, d " 
"from tableA a " 
"inner join tableB b " 
"on a.Id = b.ID " 
"where a.value < .99 " 
"order by a.Id " 


bcp %myQuery% queryout C:\myDir\filenameOut.txt -S ServerName -T -c 

我已經發現了克拉運營商做了類似的,並應用如此:

SET myQuery = 
"select a, b, c, d "^
"from tableA a "^
"inner join tableB b "^
"on a.Id = b.ID "^
"where a.value < .99 "^
"order by a.Id " 

無濟於事。錯誤消息說:

「[第一行內容]不被識別爲內部或外部 命令,可操作的程序或批處理文件。」

這讓我覺得行不是正確連接。

我認識到批處理文件通常不能很好地處理像這樣的多行操作,但是有沒有一種簡單的方法來實現這一點?

+0

您需要將關鍵字多個空格什麼。 –

+0

@GordonLinoff,'關鍵字'是指SQL查詢的內容? – Chris

回答

0
"select a, b, c, d"^
"from tableA a"^
"inner join tableB b"^
"on a.Id = b.ID"^
"where a.value < .99"^
"order by a.Id" 

我期待這成爲。

select a, b, c, dfrom tableA ainner join tableB bon a.Id = b.IDwhere a.value < .99order by a.Id 

查看問題?

這是你想要

select a, b, c, d from table A a inner join table B b on a.Id = b.ID where a.value < .99 order by a.Id 
+0

在除了最後一次結果中出現相同錯誤之外的每行之後加上一個額外的空格。 – Chris

+0

@chris我不認爲你是用bcp作爲前綴 - 那個錯誤信息是來自不是來自sql server的windows。 – Hogan

+0

所有這些都是通過批處理文件調用的。當我扁平查詢並刪除額外的雙引號和克拉,它運行良好。我詢問是否/如何能夠從單行創建「塊」查詢以使其更易讀/可維護。 – Chris