ada*_*vea 4 amazon-s3 amazon-redshift
我正在开发级别创建生产红移数据库的副本.我知道如何将数据从生产实例/集群卸载到s3,然后将该数据复制到我的开发实例/集群中,但前提是我一次卸载所有数据.我想要做的是从每个表中复制大约1000行,以减少空间并在我的redshift实例之间传输时间.
例如
UNLOAD ('SELECT * FROM myschema.mytable LIMIT 1000') TO 's3://my-bucket' CREDENTIALS etcetcetc
Run Code Online (Sandbox Code Playgroud)
有没有办法做到这一点LIMIT用UNLOAD,还是我将不得不切换到批量插入式的范例?
编辑: 我是以编程方式卸载和复制一堆表,所以我不想在任何基于键的限制中硬编码,以防我们添加新表或更改表结构等.
虽然"LIMIT"不是实际"UNLOAD"命令的一部分,但UNLOAD上的Redshift文档提供了一些替代方案:
限制条款
SELECT查询不能在外部SELECT中使用LIMIT子句.例如,以下UNLOAD语句将失败:
Run Code Online (Sandbox Code Playgroud)unload ('select * from venue limit 10') to 's3://mybucket/venue_pipe_' credentials 'aws_access_key_id=<access-key-id>;aws_secret_access_key=<secret-access-key>';而是使用嵌套的LIMIT子句.例如:
Run Code Online (Sandbox Code Playgroud)unload ('select * from venue where venueid in (select venueid from venue order by venueid desc limit 10)') to 's3://mybucket/venue_pipe_' credentials 'aws_access_key_id=<access-key-id>;aws_secret_access_key=<secret-access-key>';或者,您可以使用SELECT ... INTO或CREATE TABLE AS使用LIMIT子句填充表,然后从该表中卸载.
| 归档时间: |
|
| 查看次数: |
4621 次 |
| 最近记录: |