gpt4 book ai didi

amazon-s3 - 如何从 Redshift 表中仅卸载 1000 行

转载 作者:行者123 更新时间:2023-12-04 22:59:03 25 4
gpt4 key购买 nike

我正在开发级别创建生产 Redshift 数据库的副本。我知道如何将数据从我的生产实例/集群卸载到 s3,然后将该数据复制到我的开发实例/集群中,但前提是我一次卸载所有数据。相反,我想做的是从我的每个表中复制大约 1000 行,以减少我的 redshift 实例之间的空间和传输时间。

例如

UNLOAD ('SELECT * FROM myschema.mytable LIMIT 1000') TO 's3://my-bucket' CREDENTIALS etcetcetc

有没有办法做到这一点 LIMITUNLOAD ,或者我将不得不切换到批量插入式范例?

编辑:我正在以编程方式卸载和复制一堆表,所以我不想在任何基于键的限制中进行硬编码,以防我们添加新表或更改表结构等。

最佳答案

虽然“LIMIT”不是实际“UNLOAD”命令的一部分,但 Redshift documentation on UNLOAD provides a few alternatives :

Limit Clause

The SELECT query cannot use a LIMIT clause in the outer SELECT. For example, the following UNLOAD statement will fail:

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>';

Instead, use a nested LIMIT clause. For example:

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>';

Alternatively, you could populate a table using SELECT…INTO or CREATE TABLE AS using a LIMIT clause, then unload from that table.

关于amazon-s3 - 如何从 Redshift 表中仅卸载 1000 行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32149296/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com