【问题标题】:Parsing SQL CREATE TABLE statement using jQuery?使用 jQuery 解析 SQL CREATE TABLE 语句?
【发布时间】:2011-05-02 21:47:10
【问题描述】:

我正在编写一个使用 SQL 作为输入的网络应用程序。此 SQL 必须始终是 CREATE TABLE 语句,我的应用需要做的是从中获取以下属性:

  • 字段名称
  • 类型
  • 长度(如果有)
  • 二进制(如果可用)
  • 允许 NULL(如果可用)
  • 自动递增(如果可用)

示例 SQL:

CREATE TABLE customer
(First_Name char(50),
Last_Name char(50),
Address char(50),
City char(50),
Country char(25),
Birth_Date date)

我不知道从哪里开始,而且我不擅长编写这样的解析器。是否有我可以使用的 JavaScript/jQuery 的 SQL 解析器或任何示例代码?谢谢。

【问题讨论】:

    标签: javascript jquery sql parsing


    【解决方案1】:

    我的任务是为 sql 的 Notepad ++ 编辑器提供提示。因此,我对数据库结构的转储进行了解析。 工作成果:https://github.com/trdm/jn-npp-scripts/blob/master/includes/IntellSql.js

    用途:

    var vQa = new CSqlDumpAnalizer();
    vQa.setText(textSql)
    vQa.parse();
    vQa.printTables();
    

    【讨论】:

      【解决方案2】:

      在 Google 项目中有一个名为“TrimQuery”的开源项目,下面是一个示例:

      var selectStatement = queryLang.parseSQL("SELECT Customer.* FROM Customer");
      

      这对JOINSSELECT item.*,relation.other FROM X等通用SQL语言有很好的支持

      希望这会有所帮助。

      【讨论】:

      • 它是否支持CREATE TABLE(我唯一需要的)? (:
      • 不,它只支持'SELECT''DESTROY''UPDATE''INSERT',但它已发布,以便您可以查看并帮助您构建自己的。
      【解决方案3】:

      这不是一个完整的解决方案,但希望能帮助您入门。

      您可以检查以下正则表达式:

      /^CREATE\s+TABLE\s+(\S*)\s*\((.*)\)$/
      

      这很粗略,但应该匹配。

      然后您可以提取第一个匹配组(假设您需要表的名称),然后为字段列表提取第二个匹配组

      然后您可以在逗号上拆分字段列表以获取每个字段的信息。除此之外,您可以通过匹配 /^(.)\s(.)$/ 中的第一组来获取字段名称...您必须在解析语句的后半部分(类型、长度、null/not null、默认值、identity(1,1))但如果你能找出某种始终适用的模式,我相信它可以做到。请注意,上面还假设空白被正确修剪,但这很容易。

      【讨论】:

      • 解析 SQL 从未如此简单,希望您一路克服所有问题。
      • 正确,但看起来他已经开始期待某种半格式化输入。
      • 没错。它始终是 CREATE TABLE 声明。该功能对我的应用来说并不重要,但只会加快它的使用速度。
      猜你喜欢
      • 2014-04-27
      • 2018-06-06
      • 2021-07-29
      • 1970-01-01
      • 1970-01-01
      • 2012-12-12
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多