使用jQuery解析SQL CREATE TABLE语句?

我正在编写一个使用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解析器,还是任何示例代码? 谢谢。

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

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

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

这很粗糙,但它应该匹配。

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

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

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

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

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

希望这可以帮助。