运行 包含来自 aws athena cli 的伪列的查询
Running query containing pseudo column from aws athena cli
参考以下post、
我尝试 运行 使用 aws athena 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>"}'
我总是使用 $path 的空值执行查询。例如,"SELECT regexp_extract('', '[^/]+$') AS filename ...." 并且文件名在所有返回的行中显示为空。
注意:我将 $path 周围的双引号替换为单引号,结果没有改变。
虽然相同的查询在 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>"}'
一个有用的技巧是查看 Athena Web GUI 中的历史记录,从中您可以准确地看到从命令行传递到 Athena 的内容。
参见:
How to escape single quotes within single quoted strings?
参考以下post、
我尝试 运行 使用 aws athena 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>"}'
我总是使用 $path 的空值执行查询。例如,"SELECT regexp_extract('', '[^/]+$') AS filename ...." 并且文件名在所有返回的行中显示为空。
注意:我将 $path 周围的双引号替换为单引号,结果没有改变。
虽然相同的查询在 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>"}'
一个有用的技巧是查看 Athena Web GUI 中的历史记录,从中您可以准确地看到从命令行传递到 Athena 的内容。
参见:
How to escape single quotes within single quoted strings?