【小ネタ】AccessからRedshiftに接続した時に正しく表示されなかった時の解決方法
DI部のおおたきです。
Microsoft Access2013からRedshitに接続するというレアなケースがあり、その際うまく表示されない現象がありました。
今回その時の解決方法というには大げさですが、対応した方法についての内容です。
AccessからRedshiftのテーブルを参照するにはRedhisftのODBCドライバをWindowsにインストールします。
ダウンロード先はこちらに記載があります。
※今回使用したRedshiftのODBCのバージョンは「1.3.6.1000」です。
ODBCのデータソースの作成方法についてはここでは省略します。
Redshiftにテーブルを用意します。今回はコード、部署、名前を登録できるsampleテーブルを作成しました。データはこんな感じで登録されています。またカラムの型は全てVARCHARになっており、codeカラムが一意になるイメージです。
code | dept | name |
---|---|---|
A0001 | 事業部 | 田中 |
A0002 | 事業部 | 鈴木 |
A0003 | 事業部 | 高橋 |
Accessから接続してみます。
メニューの外部データタブ➡︎ODBCデータベースを選択します。
「リンクテーブルを作成してソースデータにリンクする」を選択してOKボタンをクリックします。
事前に作成したデータソースを選択します。
テーブル一覧が表示されるので、対象のテーブルを選択すると、「固有レコード識別子の選択」画面が表示されます。
今回はcodeカラムが主キーの想定になるのでcodeを選択します。
作成したリンクテーブルを選択してデータを表示させてみます。#Deleted
と表示されてしまい、データが正しく表示されません。
調査してみると他のDBでも同様の現象は発生していることが分かりました。主キーになるカラムが数値型にすると解決するという記載がありましたので、実際にcodeカラムをintに変えて別テーブルを作成し数値データにしたところ表示されました。しかし、既に存在するテーブルに対してカラムの変更は難しいのでこの方法は使用できません。
Postgresqlでは正しく動作できているようなので、PostgresqlのODBCドライバで試してみました。
Postgresql用のドライバこちらからダウンロードできます。
※今回使用したPostgesqlのODBCのバージョンは「9.6.500」です。
インストール後にODBCのデータソース新規作成画面でドライバを確認すると「PostgreSQL ANSI」と「PostgeSQL Unicode」があるので「PostgeSQL Unicode」を選択し、接続情報を設定します。
先ほどと同じようにAccessのリンクテーブルを使って表示してみます。
無事データが正しく表示されました。
まとめ
RedshiftのドライバからPostgresqlのドライバに切り替えることで無事表示ができました。
現状、AccessからRedshiftに接続する場合はPostgtesqlのドライバを使った方が良さそうです。
今回は以上です。