2016-09-28 2 views
0

SQLで複数のクエリを実行してCSVとしてエクスポートするPowershell関数があります。これらのクエリのそれぞれは、日付変数に依存しています。現在の設定を使用して、Powershellのこの日付変数を(ストアドプロシージャではなく)これらのSQLスクリプトに渡す方法はありますか?どんな助けでも大歓迎です!データが使用されている場所あなたのクエリでマーカーを追加することができPowershellから変数をSQLスクリプトに渡す

Function Run-Query 
{ 
    param([string[]]$queries,[string[]]$sheetnames) 
    Begin 
    { 

     $SqlConnection = New-Object System.Data.SqlClient.SqlConnection 
     $SqlConnection.ConnectionString = "Server = $SQLServer; Database = $Database; User ID = $uid; Password = $pwd;" 
     Write-host "Connection to database successful." 
    }#End Begin 
    Process 
    { 
     # Loop through each query 
     For($i = 0; $i -lt $queries.count; $i++) 
     { 
      $SqlCmd = New-Object System.Data.SqlClient.SqlCommand 

      # Use the current index ($i) to get the query 
      $SqlCmd.CommandText = $queries[$i] 

      $SqlCmd.Connection = $SqlConnection 
      $SqlAdapter = New-Object System.Data.SqlClient.SqlDataAdapter 
      $SqlAdapter.SelectCommand = $SqlCmd 
      $DataSet = New-Object System.Data.DataSet 
      $SqlAdapter.Fill($DataSet) 

      # Use the current index ($i) to get the sheetname for the CSV 
      $DataSet.Tables[0] #| Export-Csv -NoTypeInformation -Path "C:\Users\mbaron\Downloads\$($sheetnames[$i]).csv" 
     } 
    }#End Process 
    End 
    { 
     $SqlConnection.Close() 
    } 
}#End function run-query. 
+0

を?この関数はクエリを生成または編集しません。 – Matt

+0

ADO.NETでパラメータ化されたクエリを読み込みます。 – alroc

+0

@Mattコンピュータのファイルからクエリを取得します。 $ SqlQuery1 = get-content "C:¥Documents¥SQL Server Management Studio¥test¥test.sql"アウトストリング; $ queries = @() $ queries + = @ " $ SqlQuery1 " @ – mtb2434

答えて

-2

、その後、例えば、関連する日付と交換してください:あなたはから来照会され

cls 
$date = '1/1/2016' 
$query = 'some $$marker$$ script' 
$query = $query.replace('$$marker$$', $date) 
$query 
+1

これはSQLインジェクションの仕組みです。 –

+0

Remus、すべてのコードはこのユーザーの制御下にあり、外部ユーザーと通信していない限り、SQLインジェクションは実行されません。 – Jimbo

+3

@Jimbo SQLインジェクションは、*あらゆる*不正な入力から来る可能性があります。すべての入力が悪意のある、または無効なペイロード(意図的または非意図的)を運ぶことができると常に仮定し、適切なプラクティスを使用してそれを保護します。 – alroc

関連する問題