コマンドラインからsqlworkbenchを使ってRedshiftからデータを取得する

DBへのアクセス経路

local -> 踏み台サーバー -> Redshift

いきなりまとめ

  • port forwardを理解していなかった
  • ので、sqlworkbenchをコマンドラインを使うべきだと思い込んでいた
  • しかし使う必要はなかった

環境

  • Windows 7 64bit
  • Workbench-Build118
  • teraterm

接続profileの作成

sqlworkbenchを開いて、Select Connection Profile画面で作成する

下記情報を入力し、Profile名を付けておく

  • Driver(Driver File選択)
  • URL
  • Username
  • Password

Driver

http://docs.aws.amazon.com/ja_jp/redshift/latest/mgmt/configure-jdbc-connection.html#download-jdbc-driver を参考にして、Driverのダウンロードし、クラス名をメモしておく

今回は以下のようにした

  • https://s3.amazonaws.com/redshift-downloads/drivers/RedshiftJDBC41-1.1.13.1013.jar
  • com.amazon.redshift.jdbc41.Driver
  • Workbenchのフォルダに上記Driverを格納する

URL

  • jdbc:redshift://エンドポイント:ポート/dbname
  • 踏み台サーバーを経由」するので
  • jdbc:redshift://127.0.0.1:local_port/dbname

本来のアクセス先(エンドポイント)の情報は、https://console.aws.amazon.com/redshift/ を参照

port forward

鍵準備

  • 公開鍵作成
  • 踏み台サーバーに.ssh/authorized_keysとしてアップロード(600)
  • 秘密鍵作成

踏み台サーバーに接続

teraterm のマクロで

踏み台host:port
    /ssh
    /auth=publickey
    /user=username
    /passwd=pass
    /keyfile=/path/to/秘密鍵
    /ssh-Llocalhost:local_port:endpoint:ep_port
  • 踏み台サーバーに公開鍵認証
  • localhost:localport にアクセスすると
  • Redshiftにアクセスすることになる

参考

  • http://blue-red.ddo.jp/~ao/wiki/wiki.cgi?page=SSH%A4%CB%A4%E8%A4%EB%A5%DD%A1%BC%A5%C8%A5%D5%A5%A9%A5%EF%A1%BC%A5%C7%A5%A3%A5%F3%A5%B0
  • http://halyou.blog84.fc2.com/blog-entry-1004.html

GUIとして便利なoption

  • Remenber DbExplorer Schema
  • Separate connection per tab

仕方なく Save passowrd

SQL実行

cd "/path/to/Workbench-dir"

-- WbExport -file=export.tsv -type=text -delimiter=\t -encoding=UTF8;
SELECT *
FROM table_name

without_profile.bat

java -jar sqlworkbench.jar
    -url=url
    -driver=class_name
    -username=user
    -password=pass
    -driverjar=/path/to/driver.jar
    -command
    -displayResult=true
    -showTiming=true
    -printStatements
    -script='/path/to/script.sql'

with_profile.bat

java -jar sqlworkbench.jar
    -profile='profile_name'
    -script='/path/to/script.sql'

sqlworkbench manual

http://www.sql-workbench.net/manual/workbench-manual.html

profile

  • http://www.sql-workbench.net/manual/using-scripting.html
  • http://www.sql-workbench.net/manual/commandline.html#commandline-connect-profile

WbExport

  • http://www.sql-workbench.net/manual/wb-commands.html
  • http://www.sql-workbench.net/manual/command-export.html
  • http://stackoverflow.com/questions/20643052/using-wbexport-and-wbinclude-commands-in-sql-workbench-batch-mode