参考下面的帖子,
如何获得输入文件名作为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控制台上的精细,虽然。 我缺少的是在这里吗?
如果您运行的是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的历史,形成了你所看到的正是从命令行雅典娜通过。
看到:
如何逃脱单引号的字符串中的单引号?