我在S3中有一个非常大的CSV文件,只需要获取该文件的标头(CSV的第一行,即具有列名,而不是HTTP标头)。有没有一种方法,而无需先下载整个文件?我正在使用Java AWS开发工具包。我不认为这些信息存储在对象元数据中,但是我可能是错的。
编辑:
下面选择的答案有效,并且使用了S3 Select,但是对我有用的查询是
select s.* from S3Object s limit 1
答案 0 :(得分:4)
您可以使用S3 select
从 AWS S3 中存储的任何文件中查询数据。
aws docs中的Java示例。
要从CSV
文件中选择列标题,您可以将结果limit
one record
。在此处查看SELECT command。
例如:
QUERY = "select s.* from S3Object s limit 1";
答案 1 :(得分:2)
我知道您可以从文件中下载一定范围的字节。因此,您可以下载大约文件的10%(但是您必须自己弄清楚这个数字),然后将这些字节转换为chars,然后转换为字符串。
输出可能是标头+一些值,因此您必须查看如何解析内容,以便仅保留标头。
// Get a range of bytes from an object and print the bytes.
GetObjectRequest rangeObjectRequest = new GetObjectRequest(bucketName, key)
.withRange(0, 9);