環境
OS:CentOS7 ( FWはOFFにしている )
PostgreSQL:Ver9.2.23
ACCESS:ACCESS2016
注意
CPUが64bitのものなら、
Officeも64bit版を入れておく必要がある。
ODBCドライバは32bit版と64bit版があるが、
OSは64bit、ODBCドライバも64bit、
ACCESS2016が32bit、の組み合わせは不整合でエラーが出る。
Office製品で、32bitと64bitの混在は不可。
(Visioは32bit、ACCESSは64bitの組み合わせはインストールできない)
作業内容
CentOS7にPostgreSQLをインストール。
$ sudo yum -y install postgresql-server
1度rootになる。
$ su
パーミッションを変更する。
# chmod 757 /usr/local
postgresユーザになる。
$ su postgres $ cd /var/lib/pgsql/data
データベースクラスタ(全てのデータが格納される場所)を作成する。
$ initdb -D /usr/local/pgsql/data
rootに戻って、パーミッションを元に戻す。
# chmod 755 /usr/local
またpostgresユーザになる。
# su postgres
postgresql-setup なるコマンドもあるらしいのでそれも念のため実行しておく。
$ postgresql-setup initdb
これあれば、上のinitdbコマンドはやらなくて良かったかも。
設定ファイル編集。
$ vi /var/lib/pgsql/data/postgresql.conf
listen_addresses = '*'
この1行を追加した。(サーバがどのIPアドレスで受け付けるかを指定する)
接続できるクライアントの制限の設定。
$ vi /var/lib/pgsql/data/pg_hba.conf
このファイルの最後に、
local all all peer
とか書かれた行があるので、それらを全て#でコメントアウトする。
それから
local all all password host all all 127.0.0.1/32 password host all all ::1/128 password host all all 192.168.1.0/24 password
を追加した。
(最後はネットワークアドレスを指定しているけど、
そのネットワークのIPアドレス全て受け付けるという意味)
$ psql -l
とやって、データベースを確認する。
$ psql
と打って、パスワード入力してpsqlに入る。
$ create database test_db;
と打って、データベースを作成する。
$ \c test_db;
と打って、データベースを切り替える。
$ create table test ( id integer, name text );
と打って、テーブルを作成。
$ insert into test values ( 0, 'tanaka' );
と打って、データを挿入。
$ select * from test;
と打って、挿入したデータを確認。
PostgreSQLのODBCドライバをWindowsにインストールするので、
インストーラーを次のURLからダウンロードする。
https://www.postgresql.org/ftp/odbc/versions/
32bit版と64bit版があるけど、
ACCESS2016の32bit版をインストールしてるなら、ODBCドライバも32bitを選択する必要がある。(CPUも32bitである必要がある)
ACCESS2016の64bit版をインストールしてるなら、ODBCドライバも64bitを選択する必要がある。(CPUも64bitである必要がある)
msiフォルダの1番バージョンが高いものを選べば良いはず。
インストールが終わったら、(Win7の場合)
コントロールパネル→管理ツール→データソース(ODBC)を起動して、
ユーザーDSNタブの追加ボタンをクリックして、
出てきたウィンドウに各種情報を入力してテストが完了したら
保存ボタンをクリック。
次にACCESS2016を起動して、空のデータベースを開く。
「外部データ」タブの「新しいデータソース」→「他のソースから」
→「ODBCデータベース」をクリック。
ウィンドウが出てくるので、
「リンクテーブルを作成してソースデータにリンクする」を選択してOKボタンをクリック。
データソースの選択というウィンドウが出てくるので、
「コンピューターデータソース」タブをクリックして、
「PostgreSQL_Test(さっき作成したもの)」を選択してOKボタンをクリック。
テーブルのリンクというウィンドウが出てくるので、
「public.test」を選択してOKボタンをクリック。
固有レコード識別子の選択というウィンドウが出てくるので、
主キーを選択してOKボタンをクリック。
(主キーを選択しないとACCESS2016から更新ができなくなる)
左にテーブル名が出てくるので、ダブルクリックするとテーブルの内容が表示される。
更新もできることを確認したら、これで完了!