-
「CSE」を使ってPostgreSQLのデータベースのテーブルからCSVデータ出力を行ってみます。
「DBエクスプローラ」に表示されているテーブル「dt_data1」の上で右クリックします。 メニューの中から、真ん中あたりの「全データをエクスポート」を選びます。
「全データをエクスポート」を選択した後の表示が以下の図の様に、「ファイルの保存先」を指定するダイアログが表示されます。 初めてこの処理を行う時のデフォルトのフォルダは「CSE.EXE」が存在するフォルダです。 ファイル名のデフォルトは「テーブル名.csv」ですので、今回は「dt_data1.csv」となります。
エキスポート処理のメッセージがコンソールに表示されます。
エキスポートされたCSVファイルをテキストエディタで開いてみます。 各データは全て値の前後に「"」(ダブルコーテーション)で囲まれていて、文字列として出力されています。
■さらに、データの条件付けを行ってのCSV出力を行ってみます。
「DBエクスプローラ」に表示されているテーブル「dt_data1」の上で右クリックします。 メニューの中から、「条件を指定してデータをエクスポート」を選びます。
「条件を指定してデータをエクスポート」を選択した後の表示が以下の図の様に、「検索条件 - dt_data1」が表示されます。
「出力列を指定」及び「オーダー列を指定」を指定して、エキスポートを行います。 両方にチェックを入れると以下の表示になります。画面は最初のカラムの「datano」に検索条件として「in (2,3)」として 「datano」が2または3のデータを抽出します。さらに「オーダー」にもチェックを入れて「datano」順とします。
上図で「OK」ボタンをクリックすると、以下の「ファイルの保存先」を指定するダイアログが表示されます。 先ほどとは異なるファイル名(dt_data1-1.csv)を指定してみます。
エキスポートされたCSVファイルをテキストエディタで開いてみます。 「datano」が2および3のみのデータのみであり、「datano」順になっています。
以上の様に比較的簡単にテーブルの内容をCSVファイルに出力することができます。
この機能だけでも「CSE」を使ってみる価値はあると思います。
=====
2016/01/22:の時の情報
PR -
「CSE」を使ってPostgreSQLのデータベースにテーブルを作成し、データを簡単に入力してみます。
最初にテーブルの作成を行います。CSEのメイン画面で以下の図の様にCREATE文をキー入力し、 実行ボタン(ツールバーの「!」もしくは、「メニュー」⇒「データベース」⇒「実行」)をクリックします。
コンソールには実行結果が表示されます。
作成されたテーブルが「DBエクスプローラ」に表示されますので、テーブル「dt_data1」の上で右クリックします。 メニューの中から、一番上の「全データを開く」を選びます。
「pg_hba.conf」はPostgreSQLがインストールされているフォルダ内の「data」フォルダ内に存在します。
「全データを開く」を選択した後の表示が以下の図の様に、コンソールに「dt_data1」の内容を表示されます。 このグリッドにデータを入力していきます。(図は3件のデータを入力した様子)
グリッドにデータを入力後、「メニュー」⇒「データベース」⇒「編集の反映」を選択します。 以下の確認メッセージが表示されますので、「OK」をクリックします。
テーブルへの登録のメッセージがコンソールに表示されます。
再度「DBエクスプローラ」のテーブル「dt_data1」上で「全データを開く」を選択すれば、 入力されたデータがコンソールの部分に表示されるはずです。
=====
2016/01/20:の時の情報
-
久々にCSE「Common SQL Environment」を使ったPostgreSQLへの接続を行う必要がありましたので、 その時のやり方をまとめてみました。
PostgreSQLと言えば「pgAdminⅢ」がありますが、CSEも使い勝手がいいので利用しています。
まず最初にPostgreSQLのクライアント認証の設定を変更する為に「pg_hba.conf」の編集を行います。
「pg_hba.conf」はPostgreSQLがインストールされているフォルダ内の「data」フォルダ内に存在します。
(私の環境では C:\Program Files\PostgreSQL\9.2\data に存在します)
「localhost」からアクセスをする場合は、「pg_hba.conf」をテキストエディタで開いて、 以下の様に設定して下さい。(「#」はコメント行です。)
# IPv4 local connections: #host all all 127.0.0.1/32 md5 host all all 127.0.0.1/32 trust
尚、全てのアクセスを許可する場合は、以下の様に設定して下さい。
# IPv4 local connections: #host all all 127.0.0.1/32 md5 host all all 0.0.0.0/32 trust
上記の修正が終わった後で、「pg_hba.conf」を上書き保存し、PostgreSQLのサービスを再起動します。
次に、「libpq.dll」をCSEが存在するフォルダに入れます。
このDLLですが、現在のCSEの紹介されているページのリンクは切れている様ですので、 以下のURLのところで該当するファイル(「日本語Windows版 libpq」..... libpq-6.5jp.zip)をダウンロードし 回答して、「libpq.dll」をコピーします。(URLは直接リンクではありませんので、文字列をコピペして下さい)
「http://www.psn.ne.jp/support/database/psql.html」
CSEの起動を行い。「メニュー」の「データベース」⇒「接続」を選択します。
コンソール画面に「接続されました」の表示がされたら、接続が完了したことになります。
=====
2016/01/18:の時の情報
-
VB.NETでエクセルファイルを処理する場合、エクセルのプロセスがメモリ上に残るときがあります。
プロセスにエクセル(EXCEL.EXE)が残ると、エクセルを扱うプログラムでエクセルファイルのアクセスを行い、 同時にエクセルを起動して処理したい場合に不都合が発生します。
VB.NETプログラムからエクセルを扱う場合は、以下のソースの様にエクセルアプリケーションオブジェクト、 ブックスオブジェクト、ブックオブジェクト、シートオブジェクト等を利用しますが、それぞれ使用した後では オブジェクトを廃棄してやる必要があります。
また、オブジェクトを2回参照すること、つまり"."(ドットでの参照)の参照は1回のみにします。
さらに、処理を終えるところではブックオブジェクトはCloseし、エクセルアプリケーションオブジェクトはQuitする様にします。
'''
エクセルファイル処理 '''xlsxファイル名 Private Sub TestXlsx(ByVal strXlsxFileName As String) 'エクセル・オブジェクト宣言 Dim objExcel As Object = Nothing Dim objWorkBooks As Object = Nothing Dim objWorkBook As Object = Nothing Dim objSheet As Object = Nothing Dim objCells As Object = Nothing Dim objCell As Object = Nothing Try 'CreateObjectでExcelObjectを実行時バインディングする objExcel = CreateObject("Excel.Application") objExcel.visible = False objWorkBooks = objExcel.Workbooks objWorkBook = objWorkBooks.open(System.IO.Path.GetFullPath(strXlsxFileName)) objSheet = objWorkBook.Worksheets(1) objCells = objSheet.Cells '文字列の連結 Dim strTest As String = "" '内容を1行ずつ読み込む For Row As Integer = 1 To 10 objCell = objCells(Row, 1) strTest &= _ObjToStr(objCell.Value).Trim _ReleaseComObject(objCell) 'セルオブジェクト廃棄 objCell = objCells(Row, 2) strTest &= _ObjToStr(objCell.Value).Trim _ReleaseComObject(objCell) objCell = objCells(Row, 3) strTest &= _ObjToStr(objCell.Value).Trim & vbCrLf _ReleaseComObject(objCell) Next MsgBox(strTest) Finally '各オブジェクトの廃棄 If Not IsNothing(objCell) Then _ReleaseComObject(objCell) End If If Not IsNothing(objCells) Then _ReleaseComObject(objCells) End If If Not IsNothing(objSheet) Then _ReleaseComObject(objSheet) End If If Not IsNothing(objWorkBook) Then objWorkBook.Close(False) 'ファイルを閉じる _ReleaseComObject(objWorkBook) End If If Not IsNothing(objWorkBooks) Then _ReleaseComObject(objWorkBooks) End If If Not IsNothing(objExcel) Then objExcel.Quit() 'EXCELを閉じる _ReleaseComObject(objExcel) End If End Try End Sub '''明示的にCOMオブジェクトの参照を解放 '''COMオブジェクトの参照 Private Sub _ReleaseComObject(ByRef obj As Object) Try If Not obj Is Nothing Then Marshal.FinalReleaseComObject(obj) End If Finally obj = Nothing End Try End Sub '''Object型からString型への変更 '''変換元Object型データ '''変換後String型データ Private Function _ObjToStr(ByVal objStr As Object) As String Try Return objStr.ToString Catch ex As Exception Return "" End Try End Function
尚、今回のエクセルの処理で煩雑にならないように以下の関数を定義しています。
・「_ReleaseComObject」はオブジェクトの参照を解放するためのローカル関数です。
・「_ObjToStr」はオブジェクトの値から文字列へ変換するためのローカル関数です。
=====
2016/01/12:の時の情報
-
データベースは日々データに変化が発生しますので、毎日ある時点で定期的にバックアップする必要が出てきます。
バックアップ・リストアは pgAdmin を使えば簡単にできます。 しかし、定期的なバックアップ作業はバッチ処理とし、サーバのスケジューラで起動することが一般的だと思います。
Windows上のPostgreSQLのバックアップについて、コマンドプロンプトから行う方法を説明します。 尚、このコマンドはPostgreSQLサーバーの稼動しているマシンで実行することが前提になります。
■全データベースのバックアップ
pg_dump --format=t --file=bakup.dmp --username=postgres test
対象となるデータベースは test で、出力されるファイル名を bakup.dmp とし、ファイル形式はテキストで生成します。
データベースへのユーザ名は postgres で、これはPostgreSQLを最初に導入したときのAdminのユーザです。 このコマンドにはパスワードの指定がありませんが、pgAdminでログインし、パスワードの保存をしてあれば指定が必要ありません。
(エディタで %APPDATA%\postgresql\pgpass.conf にパスワードを登録してもOKです)
pg_dumpのコマンドですが、「pg_dump --HELP」と指定すれば、コマンドの一覧が表示されます。 多くのコマンドが表示されますが、中で使用すると言えば、テーブルの指定ぐらいでしょうか。 ■データベースの内のあるテーブルのバックアップ
pg_dump --format=t --file=bakup.dmp --username=postgres --table=table1 test
全データベースのバックアップに --table=table1 のコマンドを付加し table1 のテーブルをバックアップします。
=====
2015/04/27:の時の情報