- 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;