我正在尝试导出从sql查询生成的xml。我正在尝试这样
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]
我无法找出问题所在。
我的问题是 -
我做错了什么?
如何在驱动器中的文件中保存/导出xml?
答案 0 :(得分: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 server您希望如何格式化xml。
参考文献: