|
|
|
Препроцессор/парсер 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 |
|
||
|
Препроцессор/парсер SQL
|
|||
|---|---|---|---|
|
#18+
Nafвот было бы хорошо, если бы предусматривалась возможность писать "через точку" как в Си++ к примеру: Код: sql 1. 2. что раскрывалось бы в: Код: sql 1. 2. 3. 4. Еще лучше если бы можно было написать Sales.Contract.Company.FullName Собственно мы СУБД именно с такими возможностями делаем. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.04.2012, 16:30 |
|
||
|
Препроцессор/парсер SQL
|
|||
|---|---|---|---|
|
#18+
"Сахарок"...:) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.05.2012, 01:02 |
|
||
|
Препроцессор/парсер SQL
|
|||
|---|---|---|---|
|
#18+
serg99Nafвот было бы хорошо, если бы предусматривалась возможность писать "через точку" как в Си++ к примеру: Код: sql 1. 2. что раскрывалось бы в: Код: sql 1. 2. 3. 4. Еще лучше если бы можно было написать Sales.Contract.Company.FullName Собственно мы СУБД именно с такими возможностями делаем. Не лучше. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.05.2012, 03:42 |
|
||
|
Препроцессор/парсер SQL
|
|||
|---|---|---|---|
|
#18+
Nafвот было бы хорошо, если бы предусматривалась возможность писать "через точку" как в Си++ к примеру: Код: sql 1. 2. что раскрывалось бы в: Код: sql 1. 2. 3. 4. Примеры запросов из рабочего прототипа такого "парсера" Код: sql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. если интересно, читать здесь ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.05.2012, 23:43 |
|
||
|
Препроцессор/парсер SQL
|
|||
|---|---|---|---|
|
#18+
U-geneесли интересно, читать здесь интересно, уже ранее ознакомился )) спасибо ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.05.2012, 09:04 |
|
||
|
Препроцессор/парсер SQL
|
|||
|---|---|---|---|
|
#18+
... *смотрит, бурча под нос* ну что ж вы все классы в таблицы запихнуть пытаетесь? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.05.2012, 09:05 |
|
||
|
Препроцессор/парсер SQL
|
|||
|---|---|---|---|
|
#18+
В хелпе микрософта для всего T-SQL есть такое: Код: sql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. 29. Осталось только выдрать и парсер/генератор натравить. Может кто-то сделал уже ... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.05.2012, 18:00 |
|
||
|
|

start [/forum/topic.php?all=1&fid=32&tid=1541700]: |
0ms |
get settings: |
5ms |
get forum list: |
9ms |
check forum access: |
2ms |
check topic access: |
2ms |
track hit: |
147ms |
get topic data: |
7ms |
get forum data: |
14ms |
get page messages: |
64ms |
get tp. blocked users: |
1ms |
| others: | 204ms |
| total: | 455ms |

| 0 / 0 |
