awscli:只将文件的一部分从s3复制到本地

时间:2017-08-09 21:49:32

标签: amazon-web-services amazon-s3 aws-cli

我想使用s3 cp将文件(.csv)从s3复制到本地计算机。该文件很大,我想知道是否有办法只复制它的一部分,比如文件的前10000行或5MB。

3 个答案:

答案 0 :(得分:3)

您可以使用远程获取

aws s3api get-object --bucket my-bucket --key foo --range bytes=1-10 output.txt

请参阅:get-object documentation

您可以指定字节数,但不能指定行数,因为这需要解释内容。

答案 1 :(得分:0)

这可能无法回答原始问题,但可能是原始问题的潜在解决方案。

您可以使用 Amazon S3 Select 对 S3 上的 .csv 文件执行 SQL 查询。这不是完整的 SQL,但您可以执行基本操作,例如选择所需字段,并使用 LIMIT 选择前 10000 行。

在 SQL 查询之上,在 aws cli commandboto3 sdk 中,您还可以指定一个扫描范围,例如 0 - 5000000 字节。

更令人惊奇的是,如果您使用 sdks,您可以使用一个流对象,该对象一次只能获取几条记录。这大大减少了内存使用。

答案 2 :(得分:-1)

我一直在广泛使用AWS cli。

aws s3 cp s3://bucket/large_file.tar.gz | gunzip -cd | head -n 10000 > first_10000.csv