この記事は
SQL*PLUSもどきを作る8
SQL*PLUSもどきを作る9
の続きです。
「SQL*PLUSもどきを作成する その9」でView-History 関数を作成しました。
これに伴い、SQLを実行する関数 Execute-Queryを変更し、View-History関数を使用できるようにしたいと思います。
#========================================================================================= # Execute-Query: QueryStringを実行する # # UPDATE 2008/04/28 Ver.1.0.0 # 2008/05/19 Ver.1.0.1 SQL履歴作成機能の追加 # 2008/06/03 Ver.1.0.2 履歴からの実行機能および取得データエクスポート機能の追加 # # copyright HIRO's.NET(http://hiros-dot.net/) #========================================================================================= function global:Execute-Query([string]$ExportXmlFile, [switch]$History) { if ( $History ) { #履歴からの実行(Ver.1.0.2 ) $XmlFile = "$([Environment]::GetFolderPath(`"MyDocuments`"))\WindowsPowerShell\Oracle\History.xml" $SqlHis = View-History $XmlFile if ($SqlHis -eq $Null) { return } } if ( $SqlHis.Length -gt 0 ) { $strSQL = $SqlHis } else { Write-Host "SQLを入力してください。" -foregroundcolor Yellow Write-Host "`";`"で入力を終了し、実行します。" -foregroundcolor Yellow #複数行のQueryStringを受け取る $strSQL = Read-MultiLine } #履歴の作成(Ver.1.0.1) Write-SqlHistory $strSQL #QueryStringを実行する $dtSet = Execute-QueryString $strSQL if ( $dtSet.Tables.Count -gt 0 ) { #format-tableコマンドレットでデータを表示 $dtSet.Tables[0].Rows | format-table } #取得データをXMLにエクスポート(Ver.1.0.2) if ( $ExportXmlFile.Length -gt 0 ) { $dtSet.WriteXml($ExportXmlFile); } } #エイリアス設定 Set-Alias -name EQS -value Execute-Query -scope "Global"
実は、おまけとして、SQL実行結果をXMLファイルにエクスポートする機能も付けてみました。
まずは、前回作成した関数を呼び出す方法について説明します。
関数の引数に [switch]$History というのがあるのですが(switchパラメータについてはこちらを参照)、このパラメータを指定して関数を実行するとSQL履歴実行フォームが表示される仕組みとなっています。
このフォームが閉じられると、履歴からSQLが選択されている場合には $SqlHisにそのSQLが代入されます。
この場合の実行方法は下記の通りです。
PS > eqs -History
次に、おまけのエクスポート機能ですが、この関数を
PS > eqs "C:\Work\SQL.xml"
のようにして、実行結果のエクスポート先を指定します。この場合は "C:\Work\SQL.xml" というファイルが作成されます。
このエクスポート機能は、先ほどのSQL履歴実行フォームとの併用が可能です。
併用する場合は
PS > eqs "C:\Work\SQL.xml" -History
のようにします。 これは、SQL履歴実行を行った後に、XMLエクスポートを行います。
Theme design by Jelle Druyts
Pick a theme: BlogXP business calmBlue Candid Blue dasBlog dasblogger DirectionalRedux Discreet Blog Blue Elegante essence Just Html MadsSimple Mobile Mono Movable Radio Blue Movable Radio Heat nautica022 orangeCream Portal Project84 Project84Grass Slate Sound Waves Tricoleur useit.com Voidclass2 BlogXP business calmBlue Candid Blue dasBlog dasblogger DirectionalRedux Discreet Blog Blue Elegante essence Just Html MadsSimple Mobile Mono Movable Radio Blue Movable Radio Heat nautica022 orangeCream Portal Project84 Project84Grass Slate Sound Waves Tricoleur useit.com Voidclass2
Powered by: newtelligence dasBlog 2.0.7226.0
The opinions expressed herein are my own personal opinions and do not represent my employer's view in any way.
© Copyright 2009, HIRO
E-mail