|
|
|
Препроцессор/парсер SQL
|
|||
|---|---|---|---|
|
#18+
Всем привет. Приходится работать с базой, логические сущности которой (справочники, поля/атрибуты, связи/ассоциации) которой описаны в словаре данных, а физически размещаются в реальных табличках/полях, доступ к которым конечному юзеру закрыт...да и программисту приходится несладко. Есть API работы со всем этим делом, и вроде бы удобный, но вот дьявольски громоздкий...:( В общем, для простых операций "в коде" приходится делать массу однообразных движений... Возникла идея привлечь SQL, но с использованием логических имен бизнес-объектов, типа так: Код: sql 1. 2. Потом распарсить запрос, получить список логических имен табличек/атрибутов, потом залезть в словарь, выполнить нужные подстановки, получить "нормальный" запрос Код: sql 1. и отправить его на выполнение... Вопрос: есть ли готовые парсеры/препроцессоры SQL? Ну или что-то похожее? Спасибо. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.04.2012, 22:46 |
|
||
|
Препроцессор/парсер SQL
|
|||
|---|---|---|---|
|
#18+
А вьюхи/синонимы не проще использовать? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.04.2012, 23:10 |
|
||
|
Препроцессор/парсер SQL
|
|||
|---|---|---|---|
|
#18+
чччДВопрос: есть ли готовые парсеры/препроцессоры SQL? Ну или что-то похожее? 1C Posted via ActualForum NNTP Server 1.5 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.04.2012, 23:11 |
|
||
|
Препроцессор/парсер SQL
|
|||
|---|---|---|---|
|
#18+
Dimitry SibiryakovчччДВопрос: есть ли готовые парсеры/препроцессоры SQL? Ну или что-то похожее? 1C А что оттуда можно взять? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.04.2012, 23:15 |
|
||
|
Препроцессор/парсер SQL
|
|||
|---|---|---|---|
|
#18+
чччДА что оттуда можно взять? Фффсё! И главное - понимание, что так делать не надо. Posted via ActualForum NNTP Server 1.5 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.04.2012, 00:02 |
|
||
|
Препроцессор/парсер SQL
|
|||
|---|---|---|---|
|
#18+
чччДDimitry Sibiryakovпропущено... 1C А что оттуда можно взять?1С именно так и делает, запрос типа Код: sql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. превращается в нормальный SQL, правда имена таблиц и полей там что-то типа Ref1523 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.04.2012, 08:53 |
|
||
|
Препроцессор/парсер SQL
|
|||
|---|---|---|---|
|
#18+
Naf, 1С - это немеряно круто! :) Идея понятна, меня интересует реализация механизма. Готовые парсеры, бесплатные и с открытым кодом. ... ...хорошо бы комбинировать "обычный" SQL, с физическими именами объектов, и "расширенный", с логическими. Ибо есть таблички постоянные, не зависящие от конкретной конфигурации. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.04.2012, 10:18 |
|
||
|
Препроцессор/парсер SQL
|
|||
|---|---|---|---|
|
#18+
чччД Есть API работы со всем этим делом, и вроде бы удобный, но вот дьявольски громоздкий...:( В общем, для простых операций "в коде" приходится делать массу однообразных движений... Видел, как на основе словаря и апи системы автогенерился слой вьюх. и пакетов доступа к данным. На оракле-PL/SQL отлично работало. то был оебс с гибкими полями, которые могли быть кастомизированы по разному на разных проектах..... чччДдоступ к которым конечному юзеру закрыт что нельзя - понятно, а что можно? во что должен оттранслироваться псевдо-скуэльный код? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.04.2012, 10:43 |
|
||
|
Препроцессор/парсер SQL
|
|||
|---|---|---|---|
|
#18+
select Полное_Наименование from Справочник_Административных_Округов_Москвы where Краткое_Наименование = 'СВАО' и какой уроверь сервиса должна обеспечить система трансляции? Система, в которой юзверь редактирует запрос? набрано - по ошибке Краткое_Наименовнаие. - описался разработчик. Что должен сказать парсер? Среды разработки дают столько автоподсказок, дополнений, шаблонов.... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.04.2012, 10:48 |
|
||
|
Препроцессор/парсер SQL
|
|||
|---|---|---|---|
|
#18+
Vladimir Baskakovselect Полное_Наименование from Справочник_Административных_Округов_Москвы where Краткое_Наименование = 'СВАО' и какой уроверь сервиса должна обеспечить система трансляции? Система, в которой юзверь редактирует запрос? набрано - по ошибке Краткое_Наименовнаие. - описался разработчик. Что должен сказать парсер? Среды разработки дают столько автоподсказок, дополнений, шаблонов.... Да всего-навсего обеспечить сборку-разборку SQL предложения. На выходе программист должен получить список кляуз предложения (From, where, order by...), в них, в зависимости от части предложения - список табличек (из предложений From, Join...) и список полей, к ним относящихся. ...структура такая, в виде деревца, значитЪ... Программист пробежавшись по структуре, сам проверит (по словарю) правильные ли там имена. И выполнит замену имени таблички / поля (или, к примеру, добавить новое) на значение из словаря. А потом - бэмц - из структуры - обратно в текст. И на выполнение. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.04.2012, 11:12 |
|
||
|
Препроцессор/парсер SQL
|
|||
|---|---|---|---|
|
#18+
Какая разница помнить названия таблиц, полей или их синонимов? Если названия говорящие, то проблемы нет, если конечно Table123, то да - но лучше наименования изменить ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.04.2012, 11:14 |
|
||
|
Препроцессор/парсер SQL
|
|||
|---|---|---|---|
|
#18+
NafКакая разница помнить названия таблиц, полей или их синонимов? Если названия говорящие, то проблемы нет, если конечно Table123, то да - но лучше наименования изменить Щито? :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.04.2012, 11:22 |
|
||
|
Препроцессор/парсер SQL
|
|||
|---|---|---|---|
|
#18+
вот было бы хорошо, если бы предусматривалась возможность писать "через точку" как в Си++ к примеру: Код: sql 1. 2. что раскрывалось бы в: Код: sql 1. 2. 3. 4. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.04.2012, 11:24 |
|
||
|
Препроцессор/парсер SQL
|
|||
|---|---|---|---|
|
#18+
В АБС Diasoft 5NT есть свой препроцессор и набор макросов в include-файле. Например, Код: sql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. Приятно иногда, что не надо писать кучу строк для отладки :) И скрипты, проливаемые на базу идут в 2 шага: 1-препроцессор, 2-проливка уже на базу. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.04.2012, 11:26 |
|
||
|
Препроцессор/парсер SQL
|
|||
|---|---|---|---|
|
#18+
Nafвот было бы хорошо, если бы предусматривалась возможность писать "через точку" как в Си++ к примеру: Код: sql 1. 2. что раскрывалось бы в: Код: sql 1. 2. 3. 4. +1. Нет, +3 даже! :) ...я вот тоже еще не уверен в конечном синтаксисе, но чувствую, что должен существовать парсер, который умеет разбирать все это, и который бы настраивался под желания моей левой пятки. Осталось только его найти (или сделать). ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.04.2012, 11:33 |
|
||
|
Препроцессор/парсер SQL
|
|||
|---|---|---|---|
|
#18+
чччД, ORM? :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.04.2012, 11:54 |
|
||
|
Препроцессор/парсер SQL
|
|||
|---|---|---|---|
|
#18+
igorekkчччД, ORM? :) Да какое там "О", R-R-M, скорее уж. За#@ался я, короче. Там, где в итоге требуется одна строчка SQL, приходится туеву хучу апишный вызовов громоздить. Ну или расширять апи под каждый чих. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.04.2012, 11:58 |
|
||
|
Препроцессор/парсер SQL
|
|||
|---|---|---|---|
|
#18+
и все таки - какой сервер БД? можно ли делать вьюшки в нем? есть ли там язык ХП, и что может? За что я не люблю препроцессоры пусть из запроса селект имя_ученика из класс_10_б где уши_оттопырены родился запрос: select a1 from a2 where a3='zz' который при исполнении породил ошибку "Поле a3 имеет не тот тип". Что должен сделать "Универсальный парсер"? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.04.2012, 12:03 |
|
||
|
Препроцессор/парсер SQL
|
|||
|---|---|---|---|
|
#18+
igorekkВ АБС Diasoft 5NT есть свой препроцессор и набор макросов в include-файле. Например, Код: sql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. Приятно иногда, что не надо писать кучу строк для отладки :) И скрипты, проливаемые на базу идут в 2 шага: 1-препроцессор, 2-проливка уже на базу. Парсер ищет/заменяет слова, начинающиеся с "@__"? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.04.2012, 12:13 |
|
||
|
Препроцессор/парсер SQL
|
|||
|---|---|---|---|
|
#18+
чччД, нет. Он просто заменяет вызов M_LOG_PROC_PARAM(@DealID, DSIDENTIFIER) на всю ту простыню, которая со следующей строчки после #define. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.04.2012, 12:24 |
|
||
|
Препроцессор/парсер SQL
|
|||
|---|---|---|---|
|
#18+
http://ru.wikipedia.org/wiki/%CF%F0%E5%EF%F0%EE%F6%E5%F1%F1%EE%F0 http://ru.wikipedia.org/wiki/%D0%9C%D0%B0%D0%BA%D1%80%D0%BE%D0%BF%D1%80%D0%BE%D1%86%D0%B5%D1%81%D1%81%D0%BE%D1%80_m4 экзотично, но жутко умно - то ли умно, то ли жутко.... http://ru.wikipedia.org/wiki/%D0%C5%D4%C0%CB непросто, зато правильно http://ru.wikipedia.org/wiki/Lex http://ru.wikipedia.org/wiki/Yacc ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.04.2012, 13:37 |
|
||
|
Препроцессор/парсер SQL
|
|||
|---|---|---|---|
|
#18+
здесь - примеры применения m4 для генерации SQL http://lib.custis.ru/M4 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.04.2012, 13:49 |
|
||
|
Препроцессор/парсер SQL
|
|||
|---|---|---|---|
|
#18+
Vladimir Baskakov, спасибо, конечно, но мне нужно парсить готовые SQL - предложения, в нужные структуры. В первую очередь. Во вторую - модифицировать структуры по различным правилам. В третью - генерировать из них текст конечного SQL - предложения. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.04.2012, 13:58 |
|
||
|
Препроцессор/парсер SQL
|
|||
|---|---|---|---|
|
#18+
чччДVladimir Baskakov, спасибо, конечно, но мне нужно парсить готовые SQL - предложения, в нужные структуры. В первую очередь. Во вторую - модифицировать структуры по различным правилам. В третью - генерировать из них текст конечного SQL - предложения.Нереально. Можно ещё найти парсер для стандартного SQL, но для конкретной СУБД не найдёте. Только если написать самому и потом выложить для бесплатного пользования. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.04.2012, 14:16 |
|
||
|
Препроцессор/парсер SQL
|
|||
|---|---|---|---|
|
#18+
чччД , 1) нужно парсить готовые SQL - предложения, в нужные структуры. 2) - модифицировать структуры по различным правилам. 3) - генерировать из них текст конечного SQL - предложения. рефал в помощь.... или синтаксический анализатор, сгенеренный лексо-джассом. или..... кастомизируемый текстовый редактор , который сразу или по запросу автоподставляет в текст чего надо, превращая сырец в SQL-комментарий. гыыыы..... познайте бесконечное могущество вимо-имаксов.... гы еще раз. Без гы - сцинте, notepad++. jedit. Разработчикам (отчетов) станет легче! (задумчиво) выдрать из SQLite парсер и допилить? - дорого, и ненадежно. Не надо. Кто это сможет - не задаст такой вопрос... хотя)))) - всяко бывает.... )))) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.04.2012, 14:58 |
|
||
|
|

start [/forum/topic.php?fid=32&startmsg=37775184&tid=1541700]: |
0ms |
get settings: |
8ms |
get forum list: |
10ms |
check forum access: |
2ms |
check topic access: |
2ms |
track hit: |
141ms |
get topic data: |
8ms |
get forum data: |
2ms |
get page messages: |
57ms |
get tp. blocked users: |
1ms |
| others: | 242ms |
| total: | 473ms |

| 0 / 0 |
