Skip to content

Instantly share code, notes, and snippets.

@mogproject
Last active August 29, 2015 14:07
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save mogproject/eac40f7d4512c4b701ae to your computer and use it in GitHub Desktop.
Save mogproject/eac40f7d4512c4b701ae to your computer and use it in GitHub Desktop.
Redshift Cheat Sheet

Redshift Cheat Sheet

接続

  • psql で接続
psql -h <エンドポイントURL> -U <接続ユーザ> -d <データベース名> -p <ポート番号>

例: psql -h xxxxxx.xxxxxxxxxxxx.ap-northeast-1.redshift.amazonaws.com -U awsuser -d xxxxxx -p 5439

環境変数 PGPASSWORD=<パスワード> を指定すればパスワードの入力を省略可能。

プロンプト文字列を変える場合は -v PROMPT1='%m:%/# ' のように変数指定オプションを追加。

テーブル情報確認

  • テーブル一覧
\dt

クエリを直接実行する場合

SELECT DISTINCT tablename FROM pg_table_def WHERE schemaname = 'public' ORDER BY tablename;
  • テーブル定義の確認
\d+ <テーブル名>

クエリを直接実行する場合

SELECT * FROM pg_table_def WHERE tablename = '<テーブル名>' AND schemaname = 'public';

テーブル定義変更

  • カラムの型を変更

新しいカラムを定義し、データを全てコピーし、そしてそのカラム名を変更するより方法がない。

ALTER TABLE <テーブル名> ADD COLUMN <一時的なカラム名> <正しいカラム定義>;
UPDATE <テーブル名> SET <一時的なカラム名> = <カラム名>;
ALTER TABLE <テーブル名> DROP COLUMN <カラム名>;
ALTER TABLE <テーブル名> RENAME COLUMN <一時的なカラム名> TO <カラム名>;

クエリの実行

  • ミリ秒単位の Unix time から DATETIME に変換
SELECT TIMESTAMP 'epoch' + <カラム名> * INTERVAL '0.001 s' AS time_stamp FROM <テーブル名>
  • 日本時間で表示
SELECT CONVERT_TIMEZONE('JST', TIMESTAMP 'epoch' + <カラム名> * INTERVAL '0.001 s') AS time_stamp FROM <テーブル名>

トラブルシューティング

  • データロードエラーの調査
SELECT DISTINCT
  name AS tablename,
  raw_line,
  query,
  starttime,
  filename,
  line_number,
  colname,
  err_code,
  err_reason
FROM
  stl_load_errors error,
  stv_tbl_perm perm
WHERE
  error.tbl = perm.id
ORDER BY
  starttime DESC
LIMIT 20;

参考

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment