使用jQuery解析SQL CREATE TABLE语句?

时间:2010-10-30 20:10:27

标签: javascript jquery sql parsing

我正在编写一个使用SQL作为输入的Web应用程序。此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解析器,还是任何示例代码?感谢。

3 个答案:

答案 0 :(得分:2)

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

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

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

这很粗糙,但应该匹配。

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

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

答案 1 :(得分:1)

在Google Projects上有一个名为“TrimQuery”的OpenSource项目,下面是一个例子:

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

这对一般的SQL语言有很好的支持,例如JOINSSELECT item.*,relation.other FROM X

希望这有帮助。

答案 2 :(得分:0)

我有一个任务要为用于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();