2017-08-07 14 views
12

私の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')) 

私は地元のdrive.Pleaseのアドバイスへの.XMLファイルとしてクエリの出力を保存したいです。

+1

この質問の重複:[SQL Server 2008からのXMLファイルの生成](https://stackoverflow.com/q/1803911/243373) –

+0

状況が不明です。このクエリをトリガするのは何ですか?ユーザーにダウンロードを出力するウェブアプリですか?問い合わせされた単一のパラメータ出力をFSに格納するスケジュールされたジョブ?あるいは、一連のパラメータを横断し、それぞれが出力ファイルを把握するスケジュールされたジョブですか?または、1つのファイルを生成する一連のパラメータをトラバースする他のもの? –

答えて

5

もっともエレガントな方法ではありませんが、これを行うにはbulk copy programxp_cmdshellを使用することができます。いくつかの事は最初、セキュリティ設定の一環として、SQL Serverがデフォルトでをブロックされたので、あなたが最初とBCPは、ファイルを作成するディレクトリへのアクセス権を持っているあなたを必要とすることを有効にする必要がありますxp_cmdshellです。 xp_cmdshellを有効にするには

あなたは、この使用し、実行sp_configureRECONFIGUREをする必要があります:あなたは次のことを実行することができます

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' 

ちょうどそれにクエリを追加して確認してくださいテーブル名の周りに[]を追加してください。大規模なデータセットを扱うとき

マイクロソフトのドキュメントxp_cmdshellをのためのhereであり、bcpはbcpを使用しhere

3

を見つけることができるが、特に明確な選択肢です。また、SQL Management Studio - Export Dataを試してみることもできます。

  1. オープンインタフェース - Right Clickデータベース名に、そしてTasksは、その後、Export Data
  2. メニューが開かれました。 Next

    enter image description here

  3. が続いSQL Server Native Client、SQLサーバー、データベース名、および認証方法を選択クリック:

    enter image description here

  4. :データを保存する

    その後enter image description here

  5. はその後、我々は(あなたのケースのSQLクエリで)データを取得する方法:

    クエリ過去

    enter image description here

  6. enter image description here

  7. その後、我々はfinishをクリックして、いくつかの設定があります。

    enter image description here

3

あなたはこの例のように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エージェントジョブを使用してスケジュールを作成することもできます。

+0

こんにちはこのスクリプトをどのように実行するのですか? – user1046415

+0

@ user1046415、私は私の答えにメソッドを追加しました。 –

関連する問題