如何以yaml格式表示SQL查询?

如何以yaml格式表示SQL查询?,sql,yaml,Sql,Yaml,我正在尝试一些最终用户以yaml格式表达查询的随机想法。这个yaml文件将被送入某个中间转换器,以将yaml转换为SQL语句 下面是yaml代码片段的示例,但当我想到使用条件、表达式、子查询和联接时。随着查询变得越来越复杂,yaml变得越来越复杂 问题:如何以yaml格式定义SQL查询,同时涵盖所有场景?(是否有任何现有的库可以实现这种魔力) 问题的答案是:将SQL语句的语法树序列化为YAML 快速查看一下,以了解即使对于简单的查询,该树也是多么复杂(该工具使用Postgres的SQL解析器生成

我正在尝试一些最终用户以yaml格式表达查询的随机想法。这个yaml文件将被送入某个中间转换器,以将yaml转换为SQL语句

下面是yaml代码片段的示例,但当我想到使用条件、表达式、子查询和联接时。随着查询变得越来越复杂,yaml变得越来越复杂

问题:如何以yaml格式定义SQL查询,同时涵盖所有场景?(是否有任何现有的库可以实现这种魔力)


问题的答案是:将SQL语句的语法树序列化为YAML

快速查看一下,以了解即使对于简单的查询,该树也是多么复杂(该工具使用Postgres的SQL解析器生成SQL语句的语法树)。这种复杂性是覆盖所有场景所必需的

现在,您当然可以尝试简化此结构,使其保留重建原始语法树所需的所有信息。这正是SQL查询语言所做的!当用户可以使用定义良好且支持良好的语法来表达查询时,他们不希望写下显式结构


基本上,您将在语法树和原始SQL语言之间创建一种全新的、基于YAML的语言。使用它需要用户了解YAML和结构的语义。因此,如果您的目标是增强用户友好性,那么这不太可能成为实现这一目标的方法。

这可能会很快变得比您想象的更复杂。将SQL查询表示为数据结构绝非易事。我无法回答您的问题,但您确定这是个好主意吗?您的目标是什么,让用户查询您的数据?那为什么不通过SQL呢?可以使用外部资源教授SQL;您的YAML到SQL转换层不会在任何地方被记录,也永远不会具有SQL所具有的表达能力。再说一遍,为什么?你认为这对用户来说更容易吗?我认为这是一个非常糟糕的主意。你将如何用Yaml表达查询或?Mozhi-你应该绝对签出SQLAthanor-
table:
    schema: test
    name: test_table
  select:
    columns:
      - column: * # retrieve all columns     
  where:
    columns:
      - column: user_id
      - column: customer_id
  limit:
    value: 10
  # groupBy
  # orderBy