以下是我正在尝试的选择查询:
SELECT * from test WHERE doc = '/folder1/folder2-path/testfile.txt';
此查询返回零结果。
如果我使用like
更改查询,则可以省略特殊字符/-.
SELECT * from test WHERE doc LIKE '%folder1%folder2%path%testfile%txt';
这有效
由于我有兴趣运行批处理选择,如何解决此查询以使用eq
或IN
运算符的问题?
答案 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)。