使用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语言有很大的支持,例如JOINS
和SELECT item.*,relation.other FROM X
希望这可以帮助。