Google的BigQuery系统声明标识符必须符合正则表达式语法,特别是[A-Za-z _] [A-Za-z_0-9] *(如此处所示:https://cloud.google.com/bigquery/docs/reference/standard-sql/lexical)。此外,虽然没有明确说明,但也可能存在长度限制。最后,标识符与现有关键字不匹配。
我想基于用户输入生成SQL查询,但我还想在提交之前正确验证查询。我可以欺骗并回溯所有属性名称,但是查询可以很简单,我更喜欢保持简单。
我很容易检查正则表达式和可能的长度限制,但检查关键字列表需要我手头有最新的关键字列表。
所以有两个问题:
我是否可以使用现有的库来检查属性名称,甚至是整个查询?
如果我没有第一项,我可以获得公开维护的关键字列表吗? (是的,是的,我可以从语言规范中自行解决这个问题,但在下次Google添加新功能时,我的回答会过时。)
我专门针对BigQuery“标准”SQL而不是“Legacy”SQL。
答案 0 :(得分:2)
..或者甚至是整个查询?
是的,请在您的请求中使用dryRun
标记。查询将不会运行,但会检查它是否在语法上正确。
https://cloud.google.com/bigquery/docs/reference/rest/v2/jobs/query#dryRun
错误还应包含查询无效的原因。