使用具有特殊字符的select来查询Athena

时间:2019-07-04 05:58:38

标签: amazon-web-services amazon-athena

以下是我正在尝试的选择查询:

SELECT * from test WHERE doc = '/folder1/folder2-path/testfile.txt';

此查询返回零结果。

如果我使用like更改查询,则可以省略特殊字符/-.

SELECT * from test WHERE doc LIKE '%folder1%folder2%path%testfile%txt';

这有效

由于我有兴趣运行批处理选择,如何解决此查询以使用eqIN运算符的问题?

1 个答案:

答案 0 :(得分:0)

为了测试您的情况,我创建了一个文本文件,其中包含:

hello
there
/folder1/folder2-path/testfile.txt
this/that
here.there

我将文件上传到S3上的目录中,然后在Athena中创建了一个外部表:

CREATE EXTERNAL TABLE stack (doc string) 
ROW FORMAT SERDE 'org.apache.hadoop.hive.serde2.OpenCSVSerde' 
WITH SERDEPROPERTIES ("separatorChar" = ",", "escapeChar" = "\\") 
LOCATION 's3://my-bucket/my-folder/'

然后我运行命令:

select * from stack WHERE doc = '/folder1/folder2-path/testfile.txt'

返回:

1   /folder1/folder2-path/testfile.txt

所以,它对我有用。因此,您的问题可能是文件内容的结果,也可能是外部表的定义方式(例如,使用其他Serde)。