Windows環境のレジストリを更新せずに SQL Workbench/J を導入する方法

この記事は公開されてから1年以上経過しています。情報が古い可能性がありますので、ご注意ください。

はじめに

本来は、Windows環境からpsqlコマンドを使用してAmazon Redshiftにクエリを実行できると良いのですが、WindowsのDOSプロンプトでは、文字コードがUTF-8の場合に日本語のテーブル名やカラム名などに対応しておらず、マルチバイトが文字化けしてしまいます。今回はその回避方法として、 SQL Workbench/J を導入する方法をご紹介します。但し、本番環境などでは安易にアプリをインストールできませんので、Windows環境のレジストリを更新せずにファイルコピーのみで済む方法をご紹介します。

参考:クラスター管理ガイド - SQL Workbench/J を使用してクラスターに接続する

インストール

1.JDKのダウンロード

OracleのJava SE Runtime Environment 8 ダウンロードサイトからjre-8uXXX-windows-x64.tar.gzをダウンロードした後、アーカイブを展開してください。ダウンロードは、exeのインストーラーではなく、tar.gzファイルをダウンロードします。

2.SQL Workbench/Jのダウンロード

SQL Workbench/JのダウンロードサイトからDownload generic package for all systemsをクリックして、ダウンロードした後、アーカイブを展開してください。

3.JDBCドライバのダウンロード

接続対象のAmazon Redshift JDBC ドライバーをダウンロードします。driversフォルダを作成してその下に保存します。今回は、https://s3.amazonaws.com/redshift-downloads/drivers/RedshiftJDBC42-no-awssdk-1.2.10.1009.jarをダウンロードして配置しました。

4.起動コマンドの作成(SQLWorkbench64.cmd)

SQL Workbench/Jを起動するコマンドの作成しました。

@echo off

title SQL Workbench/J

setlocal
set WORKBENCH_HOME=Workbench-Build123

"%~dp0jre1.8.0_162\bin\java.exe" -Dvisualvm.display.name=SQLWorkbench ^
                        -Xmx512m ^
                        -jar "%WORKBENCH_HOME%\sqlworkbench.jar" ^
                        -configDir=%WORKBENCH_HOME%\.sqlworkbench
endlocal

5.上記フォルダ、コマンドの配置

上記フォルダやコマンドは、SQLWorkbenchというフォルダを作成して、全てコピーします。このフォルダはCドライブ直下やProgram Filesフォルダの下に置けるとは限りませんので、今回はDesktopに置くことを前提に進めます。SQLWorkbenchフォルダの構成は以下のとおりです。

上記のフォルダコマンドを以下の構成で配置します。

でも、毎回このフォルダを開いて、SQLWorkbench64.cmd をダブルクリックして実行するのは大変なので、SQLWorkbench64.cmdを右クリックしてショートカットを作成します。

このSQLWorkbenchというフォルダを複数の人に配布したい場合は、ショートカットのプロパティの中で指定しているパスを%USERPROFILE%に変更するとユーザー毎のデスクトップのパスが取得できるようになります。以下のようにショートカットタブをカスタマイズします。

  • リンク先(T): %USERPROFILE%\Desktop\SQLWorkbench\SQLWorkbench64.cmd
  • 作業フォルダ(S): %USERPROFILE%\Desktop\SQLWorkbench

Amazon Redshift に接続する設定

JDBCドライバのパスの指定

SQL Workbench/Jを起動すると、Select Connection Profileというダイアログが表示されます。設定の名前(Profile Name)を入力して、Driverの中からAmazon Redshift(com.amazon.redshift.jdbc.Driver)を選択して、先程ダウンロードしたJDBCドライバのパスを指定します。

JDBCドライバの接続の指定

URLはjdbc:redshift://<endpoint_url>:5439/<dbname>を指定します。SSLによる暗号化通信する場合はURLの最後にSSLのオプションを追加しますので、jdbc:redshift://<endpoint_url>:5439/<dbname>?ssl=true&amp;sslfactory=com.amazon.redshift.ssl.NonValidatingFactoryと指定します。

他のWindows環境に配布したい場合

上記のJDBCドライバ設定は、SQLWorkbench/Workbench-Build123/.sqlworkbenchフォルダの下にWbDriver.xmlというファイルに保存されます。JDBCドライバのパスは、絶対パスが登録されますので、SQLWorkbenchからの相対パスとして書き換えることで、このSQLWorkbenchのフォルダを他のWindowsにそのままコピーして利用が可能になります。

(変更前)

        <string>C:\Users\<username>\Desktop\SQLWorkbench\drivers\RedshiftJDBC42-no-awssdk-1.2.10.1009.jar</string>

(変更後)

        <string>drivers\RedshiftJDBC42-no-awssdk-1.2.10.1009.jar</string>

アンインストール

SQLWorkbenchというフォルダを削除すると実行ファイルと設定を削除できます。

最後に

今回は、Redshiftを例に解説しましたが、JDBCドライバで接続できるのでほかのDBでも同様にご利用可能です。他のアプリの依存関係がありJavaのバージョンをアップデート出来ない場合でも影響を与えることなく導入可能できますので、本番環境などでは安易にアプリをインストールできない状況に有効なワークアラウンドになるはずです。