问题标签 [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 投票
0 回答
1271 浏览

python - 使用 sqlparse 从 Python 中的 SQL 查询中提取所有列名

我正在尝试从给定的 SQL 查询(从 MySQL 开始)中提取所有列名。我在 python 中使用 sqlparser 模块。

我有一个简单的代码来获取列,直到达到“from”关键字。如何从查询的其余部分获取列名。

示例查询:

预期输出:

我面临的另一个问题是“这个解析器没有正确处理 where 子句。它没有被识别为关键字,因此,我无法清楚地从中提取信息

0 投票
0 回答
315 浏览

sql-server - 为什么 Microsoft.SqlServer.TransactSql.ScriptDom.TSqlParser 无法解析简单的有效表达式?

我们大量使用Microsoft.SqlServer.TransactSql.ScriptDom来处理一些 SQL 脚本。

我们的理解是解析器应该是完全保真的。

但是,我们最近发现了这个错误:

预期结果:isSuccess 为真

实际结果:isSuccess 为假

在 SQL Server 中运行以下查询有效: SELECT IIF( (IIF(1 = 1, 1, NULL)) IS NULL, 1, 0)

所以我们希望解析器也能够解析它。

这是一个已知的错误?

0 投票
1 回答
2000 浏览

python - 是否有任何函数可以在 Python 中解析完整的 SQL 查询?

我正在使用 postgreSQL 查询。例如,我想从 SQL 查询中提取所有信息

我想获取所有相关表、所有选择谓词和所有连接谓词、按部分分组和按部分排序。

我使用sqlparse并找到了一种仅获取相关表格的方法。是否有任何示例说明如何提取此信息?

0 投票
2 回答
1797 浏览

java - 如何使用 JSQL Parser 从查询中检索表名?

我开始编写代码来解析SQL查询,只是发现有APIs相同的查询可用。当我在这里看到 JSQLParser 时,jar使用给定的依赖项下载了

我找到了从查询中检索列名的代码,SQL如下所示:

主类:入门

使用解析器的类:变量

我尝试使用以下方法检索表:我试过这个

但它正在打印NULL。

我使用的查询是Postgresql. 方法:getColumns 正在正确打印列。我不知道如何从传递的查询中打印表名。是否有从查询中获取表名的特定方法?谁能让我知道如何使用JSQLParser 从给定查询中提取表名?

0 投票
0 回答
38 浏览

python - 使用 djongo 从 django 应用程序更新 mongodatabase 集合时出错

我面临一个错误。我正在尝试 django 文档中提供的民意调查教程。问题出在 django 'F' 函数上。我正在尝试更新选择的票数。如果我将选择对象加载到 python 内存中并进行正常的数字加法,它就可以工作。但是,如果我使用choice.update(votes=F('votes')+1),那么它会给我以下错误。

参数:(1, 'huntress', 1, 3)

如果我们观察%(2)s应该是一个数字而不是一个字符串。但它是一个字符串。请帮助我如何解决这个问题。我正在使用 djongo 1.2.38 和 sqlparse 版本 0.2.4。

0 投票
0 回答
60 浏览

sql - 解析代码库中嵌入的 SQL

我正在使用一个代码库,该代码库在字符串和单独的代码文件中包含大量嵌入式 SQL 查询,这使得记录应用程序的数据要求变得困难。有一些基本工具,如python 中的sqlparse和相当高级的工具,如Uber 的sqlparser。理想情况下,我可以获得某种数据对象,其中包含文件列表和查询对象标记,这些标记很容易为代码库中的所有 SQL 查询生成 [File, Table, Column] 的平面列表。

0 投票
0 回答
397 浏览

django - 在 Djongo 中使用过滤器进行计数注释

目前我正在使用 Django 和配置了 Djongo 的 MongoDB。

这些是我的 2 节课:

我一直在尝试执行以下查询来查找每台机器上生产的不合格零件的数量。

但我不断收到以下错误消息:

理想情况下,我想收到类似的东西:

当通过省略过滤器来执行以下查询时

一切都按预期运行。

我正在使用以下工具:

0 投票
1 回答
1451 浏览

google-bigquery - 如何解析标准 SQL (BigQuery) 以获取输入列和输出列

We're building a data warehouse in BigQuery where we generate a large amount of data marts using standard sql statements. These can be quite large and complex. To track data lineage across a chain of dependencies, we'd like to automatically parse the SQL statements and get all the output columns, matched up with the input table.column(s).

Simple example:

SELECT t1.a, t2.b, t1.a + t2.b AS c FROM table1 t1 JOIN table2 t2 ON t1.a = t2.a

Should end up giving us:

Input Output table1.a a table2.b b table1.a c table1.b c

We've tried using this: https://www.npmjs.com/package/node-sql-parser, but it comes up short in some of our complex scenarios.

Is there any library available in any language which supports parsing a SQL statement and returning the AST for the full standard SQL grammar?

0 投票
0 回答
36 浏览

python - 解析 SQL 语句以隔离用于在 SELECT 语句之后创建列的公式

我正在尝试解析一条 SQL 语句,它的输出应该为我提供使用 FROM 子句提取的表中的属性创建列的公式。

例如。

上面的语句在解析时应该给出如下输出:


公式

总和((col2/t2.col7 - col21))


问题是公式可以包含可以有更多 SELECT 语句的子查询。

任何帮助表示赞赏。

0 投票
2 回答
163 浏览

python - 获取 SQL 查询中使用的字段

我希望能够返回给定 SQL 查询使用的所有字段的列表(最好是表详细信息)。例如查询的输入:

会回来

它确实需要使用 SQL 内核(这个词对吗?引擎?)因为读者无法知道 field3 在 table1 而不是 table2 中。出于这个原因,我假设解决方案是 SQL。如果它也可以处理,则可以加分SELECT *

我尝试了一个使用 sqlparse ( https://sqlparse.readthedocs.io/en/latest/ ) 的 python 解决方案,但是在处理涉及临时表、子查询和 CTE 的更复杂的 SQL 查询时遇到了麻烦。别名的处理也非常困难(特别是如果查询在多个地方使用相同的别名)。显然它不能处理像field3上面没有表标识符的情况。也处理不了SELECT *

我希望 SQL Server Management Studio 中可能有更优雅的解决方案,甚至 SQL Server 本身中的某些功能。我们有来自 Redgate 的 SQL Prompt,它必须对它的智能感知、架构和它正在格式化的 SQL 查询有一定的了解。

更新:根据要求:我尝试这样做的原因是找出哪些Users可以在我们的组织内执行哪些 SSRS 报告。这完全取决于他们在给定报告中的所有数据集(在我们的例子中是 SQL 查询)使用的所有字段上GRANT SELECT分配给他们的权限。Roles我已经设法根据他们Users的. 我现在想扩展那些权限允许它们运行的​​报告。GRANT SELECTRoles