# SQL Serverの接続情報
$serverName = "サーバー名"
$databaseName = "データベース名"
$connectionString = "Data Source=$serverName;Initial Catalog=$databaseName;Integrated Security=SSPI"
# SQLファイルのパス
$query1Path = "query1.sql"
$query2Path = "query2.sql"
# CSV出力パス
$outputPath = "output.csv"
# パラメータ値
$param1Value = "値"
# SQL実行結果を格納する変数
$result1 = $null
# トランザクションを開始
$connection = New-Object System.Data.SqlClient.SqlConnection($connectionString)
$connection.Open()
$transaction = $connection.BeginTransaction()
try {
# query1.sqlの実行
$query1 = Get-Content $query1Path
$command1 = New-Object System.Data.SqlClient.SqlCommand($query1, $connection, $transaction)
$command1.Parameters.AddWithValue("@param1", $param1Value)
$result1 = $command1.ExecuteReader()
# query2.sqlの実行
$query2 = Get-Content $query2Path
$command2 = New-Object System.Data.SqlClient.SqlCommand($query2, $connection, $transaction)
$affectedRows = $command2.ExecuteNonQuery()
# INSERT文の実行結果が成功した場合のみCSV出力
if ($affectedRows -gt 0) {
$result1 | Export-Csv -Path $outputPath -NoTypeInformation
}
# コミットトランザクション
$transaction.Commit()
}
catch {
# ロールバックトランザクション
$transaction.Rollback()
throw $_
}
finally {
# 接続を閉じる
$connection.Close()
}
SELECT column1, column2, column3
FROM table1
WHERE column1 = @param1
$serverName = "サーバー名"
$databaseName = "データベース名"
$query1Path = "query1.sql"
$query2Path = "query2.sql"
$outputPath = "output.csv"
$param1Value = "値"
# config.ps1の読み込み
$configPath = "./config.ps1"
if (Test-Path $configPath) {
. $configPath
} else {
throw "config.ps1が見つかりません。"
}
# SQL Serverへの接続情報
$connectionString = "Data Source=$serverName;Initial Catalog=$databaseName;Integrated Security=SSPI"
# SQL実行結果を格納する変数
$result1 = $null
# トランザクションを開始
$connection = New-Object System.Data.SqlClient.SqlConnection($connectionString)
$connection.Open()
$transaction = $connection.BeginTransaction()
try {
# query1.sqlの実行
$query1 = Get-Content $query1Path
$command1 = New-Object System.Data.SqlClient.SqlCommand($query1, $connection, $transaction)
$command1.Parameters.AddWithValue("@param1", $param1Value)
$result1 = $command1.ExecuteReader()
# query2.sqlの実行
$query2 = Get-Content $query2Path
$command2 = New-Object System.Data.SqlClient.SqlCommand($query2, $connection, $transaction)
$affectedRows = $command2.ExecuteNonQuery()
# INSERT文の実行結果が成功した場合のみCSV出力
if ($affectedRows -gt 0) {
$result1 | Export-Csv -Path $outputPath -NoTypeInformation
}
# コミットトランザクション
$transaction.Commit()
}
catch {
# ロールバックトランザクション
$transaction.Rollback()
throw $_
}
finally {
# 接続を閉じる
$connection.Close()
}
# config.ps1の読み込み
$configPath = "./config.ps1"
if (Test-Path $configPath) {
. $configPath
} else {
throw "config.ps1が見つかりません。"
}
# SQL Serverへの接続情報
$connectionString = "Data Source=$serverName;Initial Catalog=$databaseName;Integrated Security=SSPI"
# SQL実行結果を格納する変数
$result1 = $null
$dataCount = 0
# トランザクションを開始
$connection = New-Object System.Data.SqlClient.SqlConnection($connectionString)
$connection.Open()
$transaction = $connection.BeginTransaction()
try {
# query1.sqlの実行
$query1 = Get-Content $query1Path
$command1 = New-Object System.Data.SqlClient.SqlCommand($query1, $connection, $transaction)
$command1.Parameters.AddWithValue("@param1", $param1Value)
$result1 = $command1.ExecuteReader()
# データ件数を取得
$dataCount = $result1.RecordsAffected
# query2.sqlの実行
$query2 = Get-Content $query2Path
$command2 = New-Object System.Data.SqlClient.SqlCommand($query2, $connection, $transaction)
$affectedRows = $command2.ExecuteNonQuery()
# INSERT文の実行結果が成功した場合のみCSV出力
if ($affectedRows -gt 0) {
$result1 | Export-Csv -Path $outputPath -NoTypeInformation
}
# コミットトランザクション
$transaction.Commit()
}
catch {
# ロールバックトランザクション
$transaction.Rollback()
throw $_
}
finally {
# 接続を閉じる
$connection.Close()
}
# データ件数を表示
Write-Host "データ件数: $dataCount"