A THINKING FRUIT
概要
 データベースのテーブルからレコードを取得する。CSV形式でエクスポートする。
使用ファイル一覧
1.DB-Export-CSV.ps1 データベース・エクスポータ。
2.LibDb.ps1 データベース・アクセス・ライブラリ for Oracle 。
実行方法
PS D:\dev> DB-Export-CSV product
product はテーブル名。
カレントディレクトリの <テーブル名> + ".csv" ファイルへ出力する。
PowerShell ソース
Param( [String] $strTableName, [Switch] $Display ) Function To-Hex { Begin { $sb = [System.Text.StringBuilder]::new( $nCapacity, $nCapacity ) } Process { [void] $sb.Append( $_.ToString('X02') ) } End { $sb.ToString() } } Function One-Line ( [String] $strSeparator, [System.Int32] $nCapacity ) { Begin { $sb = [System.Text.StringBuilder]::new( $nCapacity, $nCapacity ) $strSeparator2 = '' } Process { [void] $sb.Append( $strSeparator2 ) $strSeparator2 = $strSeparator [void] $sb.Append( $_ ) } End { $sb.ToString() } } Function Column-Value { Process { $Value = $_ if( $Value -eq $Null ) { return '' } switch( $Value.GetType() ) { {$_ -eq [String]} { '"' + $Value + '"' } {$_ -eq [Int32]} { $Value.ToString() } {$_ -eq [Decimal]} { $Value.ToString() } {$_ -eq [Byte[]]} { '"' + ($Value | To-Hex) + '"' } {$_ -eq [DateTime]} { '"' + $Value.ToString('yyyy/MM/dd HH:mm:ss') + '"' } {$_ -eq [DBNull]} { '' } default { throw [System.Exception]::new('指定された値は未対応の型です') } } } } if( $strTableName.Length -eq 0 ) { return } $connectionStrings = @{ server = 'localhost:1521'; id = 'user'; pw = 'pass'; }; [void] [reflection.assembly]::LoadWithPartialName('System.Data.OracleClient') . LibDb $DbCtl = $Null try { $strOutputPath = '{0}.csv' -f $strTableName $strSql = 'select * from {0}' -f $strTableName $DbCtl = [DbCtl]::new($connectionStrings.server, $connectionStrings.id, $connectionStrings.pw) $DbCtl.AttachCommand($strSql) $dset = [System.Data.DataSet]::new() $r = $DbCtl.ExeSelect($dset) $table = $dset.Tables[0] if( $Display ) { $table } else { # Output name of columns if( $table.Columns.Count -gt 0 ) { $table.Columns | %{ $_.ColumnName } | One-Line ',' 8192 | Out-File -Encoding default -FilePath $strOutputPath } # Output rows foreach ($row in $table.Rows) { $row | %{$_.ItemArray | Column-Value} | One-Line ',' 8192 | Out-File -Encoding default -FilePath $strOutputPath -Append } } } catch { throw } finally { $DbCtl.Dispose() }