Amazon Redshift から SQL ダンプを行う方法はありますか?
SQL ワークベンチ/J クライアントを使用できますか?
Amazon Redshift から SQL ダンプを行う方法はありますか?
SQL ワークベンチ/J クライアントを使用できますか?
pg_dump
のスキーマは過去には機能しなかったかもしれませんが、現在は機能しています。
pg_dump -Cs -h my.redshift.server.com -p 5439 database_name > database_name.sql
CAVEAT EMPTOR: pg_dump
それでもいくつかの postgres 固有の構文を生成し、テーブルの RedshiftSORTKEY
とDISTSTYLE
定義も無視します。
別の適切なオプションは、公開された AWS 管理スクリプト ビューを使用して DDL を生成することです。SORTKEY/DISTSTYLE を処理しますが、すべての FOREIGN KEY のキャプチャに関してはバグがあることがわかり、テーブルの権限/所有者を処理しません。マイレージは異なる場合があります。
残念ながら、データ自体のダンプを取得するには、各テーブルでUNLOAD
コマンドを使用する必要があります。
これを生成する方法を次に示します。select *
宛先テーブルの列の順序がソース テーブルと同じでない場合、構文が失敗することに注意してください。
select
ist.table_schema,
ist.table_name,
'unload (''select col1,col2,etc from "' || ist.table_schema || '"."' || ist.table_name || '"'')
to ''s3://SOME/FOLDER/STRUCTURE/' || ist.table_schema || '.' || ist.table_name || '__''
credentials ''aws_access_key_id=KEY;aws_secret_access_key=SECRET''
delimiter as '',''
gzip
escape
addquotes
null as ''''
--encrypted
--parallel off
--allowoverwrite
;'
from information_schema.tables ist
where ist.table_schema not in ('pg_catalog')
order by ist.table_schema, ist.table_name
;
現在、Redshift で Workbench/J をうまく使用しています。
ダンプに関しては、現時点では Redshift で利用できるスキーマ エクスポート ツールはありません (pg_dump は機能しません) が、データは常にクエリを介して抽出できます。
お役に立てれば幸いです。
編集: Workbench/J によって生成されたコードには、並べ替えキーや分散キーなどは反映されないことに注意してください。システムテーブルpg_table_def
を見て、すべてのフィールドの情報を確認してください。フィールドが sortkey か distkey か、およびそのような情報を示します。そのテーブルのドキュメント:
http://docs.aws.amazon.com/redshift/latest/dg/r_PG_TABLE_DEF.html
Mac を使用している場合、私は Postico を使用していますが、うまく機能します。テーブルを右クリックして、[エクスポート] をクリックします。