有没有一种方法可以从Amazon Redshift导出SQL转储文件?
您可以使用SQL Workbench / J客户端吗?
有没有一种方法可以从Amazon Redshift导出SQL转储文件?
您可以使用SQL Workbench / J客户端吗?
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 admin脚本视图来生成DDL。它处理了SORTKEY/DISTSTYLE,但我发现它在捕获所有外键时存在缺陷,并且无法处理表权限/所有者。结果可能有所不同。
要获取数据本身的转储,您仍需要遗憾地在每个表上使用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
;
我们目前成功地使用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
是的,您可以通过几种方式进行操作。
将数据使用UNLOAD()导入到S3 Bucket中是最好的方法。您可以在几乎任何其他计算机上获取您的数据。 (更多信息请访问此处:http://docs.aws.amazon.com/redshift/latest/dg/r_UNLOAD.html)
通过您的Linux实例将表格内容导入数据文件。因此,运行以下命令即可:
$> psql -t -A -F 'your_delimiter' -h 'hostname' -d 'database' -U 'user' -c "select * from myTable" >> /home/userA/tableDataFile 这样就可以为您解决问题了。