问题标签 [sql-parser]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
1886 浏览

python - 使用 sqlparse 解析 CASE WHEN 语句

我有以下 SQL 查询,并希望使用sqlparse

将给出 SQL 语句中包含的所有标记:

如何解析这些标记,以便以CASE WHEN一种可以提取所有条件并保持它们的优先级的方式处理语句,如使用括号定义的那样。我无法在文档中找到任何相关示例。

对此有什么想法吗?

0 投票
2 回答
825 浏览

sql - 在 Apache Calcite 中将带有聚合函数的 SQL 查询转换为关系代数表达式 - 找不到函数签名的匹配项

我正在尝试使用 Apache Calcite 将 SQL 查询转换为关系代数表达式SqlToRelConverter

它适用于此查询(引号用于确保小写):

但是在这个查询中它失败了:

出现此错误:

org.apache.calcite.sql.validate.SqlValidatorException: No match found for function signature SUM(<NUMERIC>)

似乎 SQL 验证器以某种方式没有注册 sum 或 count 之类的聚合函数。

0 投票
1 回答
701 浏览

apache-calcite - 是否可以将 Apache Calcite 标识符配置为不区分大小写?

Calcite SQL 语言参考 ( https://calcite.apache.org/docs/reference.html ) 说明如下:

在 Calcite 中,将标识符与引用对象的名称匹配是区分大小写的。但是请记住,不带引号的标识符在匹配之前会隐式转换为大写,如果它所引用的对象是使用不带引号的标识符作为其名称创建的,那么它的名称也将被转换为大写。

是否有一些配置可以使对象创建和查询不区分大小写?例如,如果我有一个名为的表,是否countries可以将查询验证器配置为接受标识符COUNTRIEScountries在 SQL 查询中接受标识符?

我尝试将以下配置SqlParser为区分大小写false

然后将此框架配置传递给PlannerImpl使用的 in SqlToRelConverter,但是当我没有将标识符括在引号中以强制大小写时,SQL 验证器仍然失败。

0 投票
1 回答
2496 浏览

python - 解析sql select语句以获取python中的where子句条件

我有一个 sql 查询,我想将where子句中的所有条件提取到 Python 字典中。

例如,

以下是输出

这里的问题在于IN操作员。检查job_profile_id,它不包含列表。

在调试时,它不显示列表。

我无法解决这个问题。

请帮忙。

感谢帮助。

0 投票
1 回答
359 浏览

python-3.x - 如何通过连接操作获取表名

我想从“FROM”和“JOIN”中获取表名。这是查询的示例:

我在 python 中使用 sqlparse 库。这是我试过的:

我期望的输出:

有人可以帮助我吗?谢谢

0 投票
0 回答
587 浏览

sql - 如何在节点 js 中使用 SQL 解析器?

我正在使用 node+ejs 来呈现页面。在一页中,我想验证输入的 SQL 查询语法。通过搜索,我知道 sql-parser 是这样做的方法,但我不知道该怎么做。

现在我的问题是,如何使用 sql-parser 来验证 nodejs 中的查询。

因为我是初学者,所以我不知道。希望有人可以指导我正确的方向。在此先感谢。

要求我进行更多说明。

0 投票
0 回答
61 浏览

postgresql - 使用 PostgreSQL 的 Plpython UDF

我创建了一个函数,该函数利用 sqlparse 模块从任何给定的 sql 语句中提取所有命中的表:

当我以这种方式执行函数时:

它返回:bar

当我以这种方式执行函数时:

它失败了:

错误:XX000:ImportError:没有模块名称 sqlparse (plpython.c:5038)

任何反馈将不胜感激。

0 投票
1 回答
444 浏览

apache-calcite - Calcite 将 sql 解析为多数据源的部分

在我的情况下,我csv+mysql通过单个 sql 从多个数据源(如)查询数据。使用Calcite如何区分表的数据源并检测表上查询了哪些列?(数据源元数据可用)

我需要的结果类似于:
- TableA(col1, col2, col3) -> 数据源 CSV
- TableB(col1, colx, coly) -> 数据源 Mysql

我的情况类似于 Apache Drill(使用 Calcite)所做的事情,我尝试阅读 Drill 源代码,但我找不到 Drill 决定关系的方式。

这就是我现在所拥有的,但似乎没有我想要的东西~_~|||

非常感谢。

0 投票
0 回答
149 浏览

python - 如何使用 moz_sql_parser 和 DeepDiff 来比较两个 sql 查询?

我正在使用 moz_sql_parser 来比较两个 SQL 查询。和 DeepDiff 来查看两个查询之间的差异。

我想要一种不同类型的字典,如下所示,以进行更好的比较。

在当前版本中,data1 和 data2 是这样的: 并解析字典的数据,使其更清晰和可用。

但它一直在变化。所以字典的结构从来都不一样,巫婆让解析变得一团糟。

我想将 data1 和 data2 转换为:

对于表和它们自己的变量,包括使用的别名

0 投票
1 回答
345 浏览

apache-calcite - 如何使用 Calcite 解析多个 sql 语句

我想知道如何在一个字符串中解析多个语句。

sqlparser.parseStmt() 只能解析一条语句。

例如,我有一个字符串:

如何将字符串拆分为两个 SQL 语句。

我希望得到一个 SqlNode 列表。