PostgreSQL ODBCのインストール

Accessや、作ったプログラムなどからpostgreSQLに接続するためには、ODBCが必要です。

ここではそのODBCをインストールする手順と、設定方法を紹介します。

 

PostgreSQL ODBCのダウンロード

①次のダウンロードサイトへ移動します。

https://www.postgresql.org/ftp/odbc/versions/msi/

 

②アクセスした画面を下にスクロールし、

一番下のzipの内「x64」となっているzipをクリックするとダウンロードされます。(赤枠の箇所)

※32bit版のWindowsを使用している場合は、「x86」のzipを選択してください。

 

インストールする

①zipを解凍。

 

②『psqlodbc_x64.msi』をダブルクリック。

※警告画面がでたらOK、はい等を押して先に進みます。

 

③『NEXT』をクリック

 

④『NEXT』をクリック

 

⑤『NEXT』をクリック

 

⑥『NEXT』をクリック

ここまででインストールは終了です。次にODBCの設定が必要なので次に進みます。

 

ODBCの設定をする

①コントロールパネル画面より「管理ツール」をクリック

 

②ODBCデータソース(64ビット)をクリック

 

③「ユーザーDSN」タブの「追加」をクリック

 

④PostgreSQL Unicode(x64)をクリック。

※32bitのWindowsでは、「x64」がついていないものを選択します。

 

⑤以下の情報を入力します。

データソース名 … これは自由な名前でOKです。

サーバー名   … DBがあるサーバー名を入力します。自身のPCの場合、「localhost」と入力。

          別のPCの時、そのPCのIPアドレスやコンピューター名を入力します。

データベース  … 接続するDB名を入力します。

Port      … 規定では「5432」。DB側でポートを変更している場合はその番号を数値で入力します。

ユーザー名   … DBに接続するためのユーザー名。

          自身のPCに接続するときにはインストールした時のユーザー名を入力します。

パスワード   … DBに接続するためのパスワード。

          自身のPCに接続するときにはインストールした時のパスワードを入力します。

入力を終わったら「保存」ではなく、「テスト」をクリックします。

 

⑥「テスト」をクリックして「Connection successful」を表示されればOKですので、

保存を押して下さい。

 

⑦先ほど作った名前のものが追加されているのが確認できればOKです。

 

Windows Defenderへ除外登録する

PostgreSQLの動作が重いと感じた時、

Windows Defenderの除外設定に追加することで改善される可能性があります。

ここでは、Windows Defenderの除外設定手順を説明します。

 

除外登録手順

①『設定』を開きます

 

②『更新とセキュリティ』をクリック

 

③『Windowsセキュリティ』をクリック

 

④『ウイルスと脅威の防止』をクリック

 

⑤『設定の管理』をクリック

 

⑥『除外』にある『除外の追加または削除』をクリック

 

⑦除外の追加をクリック

 

⑧フォルダを選択する

 

⑨『C:\Program Files\PostgreSQL』を設定

※このフォルダにインストールしていない場合、インストール先のフォルダを指定してください。

 

⑩『このアプリがデバイスに変更を加えることを許可しますか?』が表示されたら

「はい」をクリック。

 

⑪除外の中に追加されていればOKです。

For文(ループ文)の書き方

PostgreSQLにおけるFor文の書き方です。

FOR 変数名 IN 初期値..終了値 LOOP
  --処理をここに書く
END LOOP;
あわせて読みたい

 

 

使用例

--1から10まで繰り返す
for i in 1..10 loop
	raise info '%' , i;
end loop;

※使用しているraise文はこちらで説明しています。

変数の値を画面に出す(raise)

 

 

ループ文の抜け方

ループ文から途中で抜けるには、EXITを使います。

--1から10まで繰り返す
for i in 1..10 loop

    --ループを抜けるIF文
	if i = 5 then
		exit; --exitでループを抜ける
	end if;

	raise info '%' , i;
end loop;

 

変数の値を画面に出す(raise)

FUNCTIONを作っているときに、変数の中身を見たい時があるとおもいますが、

その中身を表示するにはRaiseを使います。

-- 変数の中身を表示する(「%」に変数の値がセットされます)
raise info '%' , 変数名; 

-- 例
raise info '%' , num1;        -- 変数num1の中身を表示する
raise info 'num1=%' , num1;   -- このように書くと「num1=XX」と表示し、見やすくなります

 

変数の中身が表示された様子

変数の中身は「メッセージタブ」に表示されます。

「INFO:」の右に表示されているのが変数の値です。

※ selectしている「raise_test()」関数はこの次で紹介しています。

 

 

raise動作確認用の関数

raiseの動作を確認できるような関数を作成しました。(コピー&pgAdminに貼り付け→実行でOKです)

実行しても結果はnullが返りますが、メッセージタブに値が表示されているのが確認できます。

numの値を変えて実行すると、よりわかりやすくなると思いますのでお試しを。

CREATE OR REPLACE FUNCTION raise_test()
RETURNS character varying  LANGUAGE 'plpgsql'
COST 100 VOLATILE AS $BODY$
declare
	num numeric;
BEGIN

	num = 100; 
	raise info '%' , num; --変数numの中身を表示
	
 	num = 200; 
	raise info '%' , num; --変数numの中身を表示
	
 	num = 300; 
	raise info '%' , num; --変数numの中身を表示
	
	return null;

END;
$BODY$;

--実行するには次の文を実行して下さい
select * from raise_test();

 

あわせて読みたい

https://postgresweb.com/post-5260

 

 

エラーを取得する(EXCEPTION)構文

エラーが起こった時の処理を記述するには、『EXCEPTION』で記載します。

CREATE OR REPLACE FUNCTION err_test()
  RETURNS character varying AS
$BODY$
declare
        --省略
BEGIN
        --処理がここに書かれる(省略)

        EXCEPTION   --上の「処理」でエラーになった時、この下の「EXCEPTION」の処理が動きます
        WHEN OTHERS THEN
        --エラー時の処理をここに書きます

        --『SQLSTATE」にエラーコード 、 『SQLERRM』にエラーメッセージが格納されます
        return SQLSTATE || SQLERRM  ;
 
END;
$BODY$
  LANGUAGE plpgsql VOLATILE
  COST 100;

※PostgreSQL12で動作確認済み

 

 

実行例

関数「err_test()」を用意しましたので参考にして下さい。

エラーを発生させ、エラーコードとエラーメッセージが返るようになっています。

CREATE OR REPLACE FUNCTION err_test()
  RETURNS character varying AS
$BODY$
declare

	n_result numeric;
BEGIN

	n_result = 3/0; --ここで0で割り、わざとエラーを発生させる

	EXCEPTION
	WHEN OTHERS THEN
    -- エラーコードとエラーメッセージを返す
	return  'SQLSTATE 『' || SQLSTATE || '』 , ' || 'SQLERRM 『' || SQLERRM || '』';
 
END;
$BODY$
  LANGUAGE plpgsql VOLATILE
  COST 100;

 

上の関数を使った実行例を示します。

--実行例
select * from err_test(); 
--【結果】 "SQLSTATE 『22012』 , SQLERRM 『0 による除算が行われました』"

 

あわせて読みたい

この関数もEXCEPTIONを利用している関数です。使い方の例として参考になれば幸いです。

https://postgresweb.com/post-87

 

エラーメッセージ

動画編集ソフト「AviUtl」の環境構築で、

『lwinput.aui は Windows 上では実行できないか、エラーを含んでいます。元のインストール メディアを使用して再インストールするか、システム管理者またはソフトウェアの製造元に問い合わせてください。エラー状態 0xc000007b。 』のエラーメッセージが出た時の対処方法です。

 

 

 

対処方法

原因は『L-SMASH_Works_r9XX_plugins.zip』をLhaplusで解凍したことでした。

そのため「7-zip」で解凍しなおしたところうまくいったので、同じ現象が発生したらお試しください。

 

説明

pgAdmin4で「依存性」ウインドウが消えなくなった時の対処方法です。

(↓画面の赤枠のように)

 

対処方法

ファイル > レイアウトを初期化 をクリック、

「現在のレイアウトを初期化しますか?…」で「OK」をクリックすると直ります。