0

我在 S3 中有一个非常大的 CSV 文件,只需要获取该文件的标题(具有列名的 CSV 的顶行,而不是 HTTP 标题)。有没有办法在不先下载整个文件的情况下做到这一点?我正在使用 Java AWS 开发工具包。我不认为这些信息存储在对象元数据中,但我可能错了。

编辑:

下面选择的答案有效,它使用了 S3 Select,但对我有用的查询是

select s.* from S3Object s limit 1
4

2 回答 2

4

您可以使用AWS S3S3 select中存储的任何文件查询数据。

来自aws docs的 Java 示例。

要从文件中选择列标题CSV,您可以limit将结果保存到one record. 在这里检查SELECT 命令

例如:

QUERY = "select s.* from S3Object s limit 1";

在此处检查不同类型的查询示例

于 2020-07-26T18:18:53.023 回答
2

我知道您可以从文件中下载一系列字节。因此,您可以下载假设文件的 10%(但您必须自己计算出这个数字),然后将这些字节转换为字符,然后转换为字符串。

输出可能是标题 + 一些值,因此您必须查看如何解析内容,以便只保留标题。

// Get a range of bytes from an object and print the bytes.
            GetObjectRequest rangeObjectRequest = new GetObjectRequest(bucketName, key)
                    .withRange(0, 9);
于 2020-07-26T18:03:51.187 回答