2016-12-24 30 views
0

我想導出從sql查詢生成的xml。我想這樣的XML保存/導出 - SQL Server - 複製方向必須爲'in','out'或'format'

EXEC master.dbo.sp_configure 'show advanced options', 1 
RECONFIGURE 
EXEC master.dbo.sp_configure 'xp_cmdshell', 1 
RECONFIGURE 
EXEC xp_cmdshell 'bcp "SELECT @xml" -S <SERVERNAME> -D <DATABASE_NAME> -U <UserName> -P <PASSWORD> queryout "E:\test.xml" -T -c -t,' 

試圖這樣我得到了下面

Copy direction must be either 'in', 'out' or 'format'. 
usage: bcp {dbtable | query} {in | out | queryout | format} datafile 
[-m maxerrors]   [-f formatfile]   [-e errfile] 
[-F firstrow]    [-L lastrow]    [-b batchsize] 
[-n native type]   [-c character type]  [-w wide character type] 
[-N keep non-text native] [-V file format version] [-q quoted identifier] 
[-C code page specifier] [-t field terminator] [-r row terminator] 
[-i inputfile]   [-o outfile]    [-a packetsize] 
[-S server name]   [-U username]   [-P password] 
[-T trusted connection] [-v version]    [-R regional enable] 
[-k keep null values]  [-E keep identity values] 
[-h "load hints"]   [-x generate xml format file] 
[-d database name]  [-K application intent] 

列出的結果我沒能找出問題。

我的問題是 -

  1. 我做錯了嗎?

  2. 如何在驅動器中保存/導出xml文件?

回答

1

我不知道你想用這個命令做什麼:

exec xp_cmdshell 'bcp "SELECT @xml" -S <SERVERNAME> -D <DATABASE_NAME> -U <UserName> -P <PASSWORD> queryout "E:\test.xml" -T -c -t, 

我可以告訴你的是錯誤的馬上:

  • 你混合身份驗證與-T和-U -P

  • 您的查詢「select @xml」無效

你可以嘗試這樣的:

exec xp_cmdshell 'bcp "Select [test1]=1 for xml path" queryout e:\test.xml -T -c' 

的test.xml會是什麼樣子:

<row><test1>1</test1></row> 

,建立什麼樣的輸出,你正在尋找。

默認xp_cmdshell作爲sql server服務帳戶在服務器上執行,但可以設置代理帳戶。

你可能想看看for xml以確保你告訴sql服務器你想如何將xml格式化。

參考文獻: