如何判断字符串是否位于AWS S3 CSV文件中



我在AWS S3中有一个CSV文件。文件很大2.5 gb

文件有一列字符串,超过1.2亿个:

apc.com
xyz.com
ggg.com
dddd.com
...

如何查询文件以确定字符串xyz.com位于文件中?我只需要知道字符串是否存在,我不需要返回文件。

如果我可以传递多个字符串进行搜索,并只返回在文件中找到的字符串,那将是伟大的。

例如:

查询=比;[' xyz.com ', ' fds.com ', ' ggg.com ')将返回=比;[' xyz.com ', ' ggg.com ']

S3 Select"SelectObjectContent API允许应用程序通过使用简单的SQL表达式从对象中检索数据的子集。下面是一个Python示例:

res = client.select_object_content(
Bucket="my-bucket",
Key="my.csv",
ExpressionType="SQL",
InputSerialization={"CSV": { "FileHeaderInfo": "NONE" }}, # or IGNORE, USE
OutputSerialization={"JSON": {}},
Expression="SELECT * FROM S3Object s WHERE _1 IN ['xyz.com', 'ggg.com']") # _1 refers to the first column

有关输出解析的示例,请参阅AWS博客文章。

如果您使用aws s3 cp命令,您可以将输出发送到stdout:

aws s3 cp s3://yourbucket/foo.csv - | grep 'apc.com'

-破折号将输出到stdout。

这是grep检查多个模式的两个例子:

aws s3 cp s3://yourbucket/foo.csv - | grep -e 'apc.com' -e 'dddd.com'
aws s3 cp s3://yourbucket/foo.csv - | grep 'apc.com|dddd.com'

要了解更多关于grep的信息,请参阅手册:GNU grep 3.7

最新更新