備忘録

# 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"