从运行AWS雅典娜CLI含伪列查询(Running query containing pseudo

2019-09-26 06:05发布

参考下面的帖子,
如何获得输入文件名作为AWS雅典娜外部表列

我尝试使用AWS雅典娜CLI命令,如下运行查询,

aws athena start-query-execution --query-string "SELECT regexp_extract(\
"$path\", '[^/]+$') AS filename  FROM table" --query-execution-context '{"Database": "testdatabase"}' --result-configuration '{ "OutputLocation": "s3://<somevalidbucket>"}'

我总是与$路径空值执行的查询。 例如, “SELECT REGEXP_EXTRACT( '', '[^ /] + $')AS文件名......” 和文件名出现在所有返回的行为空。

注:我换成双引号周围$路径单引号和结果并没有改变。

同样的查询工作AWS控制台上的精细,虽然。 我缺少的是在这里吗?

Answer 1:

如果您运行的是Bash的终端,你可以用单引号括您的查询字符串和逃生使用单引号'"'"'

如果您在单引号您的查询字符串:

$ aws athena start-query-execution --query-string 'SELECT regexp_extract("$path", '"'"'[^/]+$'"'"') FROM athena_test.some_table LIMIT 10' --query-execution-context '{"Database": "athena_test"}' --result-configuration '{ "OutputLocation": "s3://<SOMEBUCKET>"}'

如果你用双引号括您的查询字符串:

$ aws athena start-query-execution --query-string "SELECT regexp_extract(\"\$path\", '[^/]+$') FROM athena_test.some_table LIMIT 10" --query-execution-context '{"Database": "athena_test"}' --result-configuration '{ "OutputLocation": "s3://<SOMEBUCKET>"}'

一个有用的技巧是看在雅典娜的Web GUI的历史,形成了你所看到的正是从命令行雅典娜通过。

看到:

如何逃脱单引号的字符串中的单引号?



文章来源: Running query containing pseudo column from aws athena cli