Windows10で利用する時の方法です。尚、SQL Workbench/Jをインストールする方法はこちら。
WindowsにSQLworkbench/J インストールして、Redshiftへ接続する方法 - goodbyegangsterのブログ
psqlをダウンロードします。Windowsでは、psql単体のみでインストールする方法はないでようで、postgerSQLのサイトに行って、postgerSQL本体のバイナリファイルをダウンロードしてきます。
https://www.postgresql.org/download/windows/
AWS公式では、バージョン"8.X"のpsql以外サポートしないと記載あるのですが、既にバージョン8時代のものはダウンロードできませんでした。。。 Not Supported
になっていない、最も古いバージョンである 9.3.22
をダウンロード、zipファイルになっているので解凍して、適当なパスに保管。僕は C:\Program Files\pgsql
に置いてます。
後はシステム環境変数の Path
に、 C:\Program Files\pgsql\bin
を追加してあげればOK。OS再起動後はpsqlが利用可能となります。
C:\>psql --version psql (PostgreSQL) 9.3.22
Redshiftへconnectする方法はこちら。
psql ツールを使用してクラスターに接続する - Amazon Redshift
Windowsから接続しようとすると、Clientのエンコード設定でSJISやめろ、と怒られます。
C:\>psql -h XXXXXXX.XXXXXXXXXX.ap-northeast-1.redshift.amazonaws.com -U root -d test -p 5439 ユーザ root のパスワード: psql: FATAL: invalid value for parameter "client_encoding": "SJIS"
そのため接続前に、 PGCLIENTENCODING
の環境変数を UTF8
で定義してあげます。同時に、Redshift側から返された文字もUTF8になっているため、Windowsコマンドプロンプトでは文字化けして表示されてしまいます。事前にchcpコマンドで、コマンドプロンプトの文字コードをUTF8対応に変更しておきます。
C:\>chcp 65001 C:\>set PGCLIENTENCODING=UTF8 C:\>psql -h XXXXXXX.XXXXXXXXXX.ap-northeast-1.redshift.amazonaws.com -U root -d test -p 5439 ユーザ root のパスワード: psql (9.3.22, サーバー 8.0.2) SSL 接続 (暗号化方式: ECDHE-RSA-AES256-GCM-SHA384, ビット長: 256) "help" でヘルプを表示します. test=#
参考となるAWS Forumはこちら。
https://forums.aws.amazon.com/thread.jspa?messageID=600088
追記(2018/05/15)
上記方法でも、問題があることが分かりました。具体的には、 Redshiftのテーブル名やカラム名にマルチバイト文字(日本語)を利用していると、対応ができないことが分かりました。つまり、以下みたいなSQLを利用するとエラーになります。
# select * from テストテーブル; ERROR: String contains invalid or unsupported UTF-8 codepoints. Bad UTF-8 hex sequence: fe (error 1)
コマンドプロンプトに日本語を入力しても、どうもそれをSJIS形式でRedshiftまで渡してしまうようで、UTF-8にしてくれないようです。Redshift側から来るUTF-8のデータは、chcpコマンドにより、ちゃんと解析されて表示されているのですが、クライアント側から送る場合、対応できないようです。
この回避方法をかなり調べているのですが、未だ見つかっていないです。。。
追記(2018/06/07)
windows subsystem for linux
を利用して ubuntu
環境を用意してあげて、そこにpsqlを入れれば対応できる抜け道をあみだしました!!!
なんだかなー、という感じですが、今の所これで対応しています。