有没有办法从Amazon Redshift进行SQL转储

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 SORTKEYDISTSTYLE表定义.

另一个不错的选择是使用已发布的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)


nan*_*gio 4

我们目前正在成功地将 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