生成的KML文件保存到本地驱动器
我的SQL查询生成XML输出:生成的KML文件保存到本地驱动器
select 'TEST.kml' as name,
(select 'TEST' as name, (
select (
select top 10 issue as name,
null as description,
null as 'Point/coordinates',
(
select
null as altitudeMode,
Coordinates as 'coordinates'
for xml path('Polygon'), type)
from Mapping for xml path('Placemark'), type))
for xml path ('Line') , type)
for xml path ('Doc'), root('kml'))
我想查询保存为.XML文件输出到本地drive.Please建议。
不是最优雅的方式,但它可以使用bulk copy program
和xp_cmdshell
来做到这一点。 xp_cmdshell
是被阻止默认由SQL Server作为安全配置的一部分,所以您需要首先启用它,并且BCP
要求您有权访问要创建该文件的目录。
要启用xp_cmdshell
你需要运行sp_configure
和RECONFIGURE
,使用此:
EXEC sp_configure'xp_cmdshell', 1
RECONFIGURE
GO
EXEC sp_configure 'show advanced options', 1
RECONFIGURE
GO
然后你可以运行以下命令:
EXEC xp_cmdshell 'bcp "SELECT * FROM [Database].dbo.[Table] FOR XML AUTO,
ELEMENTS" queryout "C:\test.xml" -c -T'
只需添加您的查询,并确保你围绕您的表名添加[]
。
要在远程查询的结果保存到本地文件,你可以使用PowerShell脚本像这样的例子:
$connection = New-Object System.Data.SqlClient.SqlConnection("Data Source=YourServer;Initial Catalog=YourDatabase;Integrated Security=SSPI")
$command = New-Object System.Data.SqlClient.SqlCommand(@("
select 'TEST.kml' as name,
(select 'TEST' as name, (
select (
select top 10 issue as name,
null as description,
null as 'Point/coordinates',
(
select
null as altitudeMode,
Coordinates as 'coordinates'
for xml path('Polygon'), type)
from Mapping for xml path('Placemark'), type))
for xml path ('Line') , type)
for xml path ('Doc'), root('kml');"), $connection);
$connection.Open();
$command.ExecuteScalar() | Out-File -FilePath "C:\KmlFiles\YourFile.kml";
$connection.Close();
该脚本可以从命令执行通过将脚本保存为扩展名为“.ps1”的文件并使用以下命令来提示:
powershell -ExecutionPolicy RemoteSigned -File "C:\PowershellScripts\ExampleExport.ps1"
可以使用Windows任务计划任务来自动执行导出来安排此命令。或者,使用带有Powershell或CmdExec步骤的SQL Server代理作业进行安排。
您好我们如何执行这个脚本? – user1046415
@ user1046415,我在我的答案中添加了方法。 –
重复此问题:[从SQL Server 2008生成XML文件](https://stackoverflow.com/q/1803911/243373)。 –
它缺少一些上下文。什么触发了这个查询?输出给用户下载的Web应用程序?一个预定的作业存储单个查询参数输出到FS?或者是一个穿过一系列参数并为每个参数抓取输出文件的schedeled作业?或者其他的遍历一系列生成单个文件的参数? –