我在 S3 中有一个非常大的 CSV 文件,只需要获取该文件的标题(具有列名的 CSV 的顶行,而不是 HTTP 标题)。有没有办法在不先下载整个文件的情况下做到这一点?我正在使用 Java AWS 开发工具包。我不认为这些信息存储在对象元数据中,但我可能错了。
编辑:
下面选择的答案有效,它使用了 S3 Select,但对我有用的查询是
select s.* from S3Object s limit 1
我在 S3 中有一个非常大的 CSV 文件,只需要获取该文件的标题(具有列名的 CSV 的顶行,而不是 HTTP 标题)。有没有办法在不先下载整个文件的情况下做到这一点?我正在使用 Java AWS 开发工具包。我不认为这些信息存储在对象元数据中,但我可能错了。
编辑:
下面选择的答案有效,它使用了 S3 Select,但对我有用的查询是
select s.* from S3Object s limit 1
您可以使用AWS S3S3 select中存储的任何文件查询数据。
来自aws docs的 Java 示例。
要从文件中选择列标题CSV,您可以limit将结果保存到one record. 在这里检查SELECT 命令。
例如:
QUERY = "select s.* from S3Object s limit 1";
在此处检查不同类型的查询示例。
我知道您可以从文件中下载一系列字节。因此,您可以下载假设文件的 10%(但您必须自己计算出这个数字),然后将这些字节转换为字符,然后转换为字符串。
输出可能是标题 + 一些值,因此您必须查看如何解析内容,以便只保留标题。
// Get a range of bytes from an object and print the bytes.
GetObjectRequest rangeObjectRequest = new GetObjectRequest(bucketName, key)
.withRange(0, 9);