2010-10-30 3 views
1

Я пишу веб-приложение, которое использует SQL в качестве входных данных. Этот SQL всегда должен быть CREATE TABLE заявление, и что мое приложение нужно сделать, это получить следующие атрибуты из него:Анализ SQL CREATE TABLE с помощью jQuery?

  • Имя поля
  • Тип
  • Длина (если таковая имеется)
  • Binary (если имеется)
  • Разрешить 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) 

Я понятия не имею, с чего начать, и я не так хорош в написании таких парсеров. Есть ли SQL-синтаксисы для JavaScript/jQuery, которые я могу использовать, или любой пример кода? Благодарю.

ответ

2

Это не полное решение, но, надеюсь, что-то, чтобы вы начали.

Вы можете проверить следующее регулярное выражение:

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

Пришло сырой, но он должен соответствовать.

Вы могли бы вытащить первую согласованную группу (при условии, что вам нужно имя таблицы), а затем второй согласованной группы для списка полого

Вы можете разбить список полея на запятой, чтобы получить информацию для каждого поля. Кроме того, вы можете получить имя поля, сопоставляя первую группу в/^ (. ) \ s (.) $/... Вам нужно было бы стать более креативным при разборе второй половины инструкции (типы, длины, null/not null, default, identity (1,1)), но если вы можете найти какой-то шаблон, который всегда будет применяться, я уверен, что это можно сделать. Обратите внимание, что вышеприведенное также предполагает, что пробелы правильно обрезаны, но это достаточно просто.

+0

Разбор SQL никогда не бывает таким простым, надеюсь, что вы преодолеете все проблемы на этом пути. – RobertPitt

+0

Правильно, но похоже, что он уже ожидает какой-то полуформатный вход для начала. – pinkfloydx33

+0

Правильно. Это всегда оператор CREATE TABLE. Эта функция не важна для моего приложения, но только ускоряет ее использование. – 2010-10-30 20:44:00

1

есть более OpenSource проект, расположенный на Google Проектах под названием «TrimQuery», ниже приведен пример:

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

Это имеет большую поддержку для общих SQL языков, таких как JOINS и SELECT item.*,relation.other FROM X

Надеется, что это помогает ,

+2

Поддерживает ли это 'CREATE TABLE' (единственное, что мне нужно)? (: – 2010-10-30 20:22:45

+0

Нет, он поддерживает только '' SELECT'', '' DESTROY'', 'UPDATE'',' 'INSERT'', но он был размещен так, что вы можете взглянуть, и это поможет вам создать своя. – RobertPitt

Смежные вопросы