Elm*_*Elm 11 mysql sql dump amazon-s3 amazon-redshift
有没有办法从Amazon Redshift进行SQL转储?
你可以使用SQL workbench/J客户端吗?
mat*_*mc3 24
pg_dump
模式可能过去没有用过,但现在确实如此.
pg_dump -Cs -h my.redshift.server.com -p 5439 database_name > database_name.sql
CAVEAT EMPTOR: pg_dump
仍然会产生一些特定于postgres的语法,也忽略了Redshift SORTKEY
和DISTSTYLE
表定义.
另一个不错的选择是使用已发布的AWS管理脚本视图来生成DDL.它处理SORTKEY/DISTSTYLE,但是我发现它在捕获所有FOREIGN KEY时是错误的,并且不处理表权限/所有者.你的milage可能会有所不同.
要获取数据本身的转储,您仍然需要在每个表上使用该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
;
Run Code Online (Sandbox Code Playgroud)
我们目前正在成功地将 Workbench/J 与 Redshift 结合使用。
关于转储,尽管始终可以通过查询提取数据,但当时 Redshift 中没有可用的架构导出工具(pg_dump 不起作用)。
希望能有所帮助。
编辑:请记住,排序和分配键之类的内容不会反映在 Workbench/J 生成的代码中。查看系统表pg_table_def
以查看每个字段的信息。它说明字段是 sortkey 还是 distkey,以及此类信息。该表上的文档:
http://docs.aws.amazon.com/redshift/latest/dg/r_PG_TABLE_DEF.html