![]() |
|
Модераторы: LSD, AntonSaburov |
![]()
|
|
| Aleksandriys |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 34 Регистрация: 16.8.2006 Репутация: нет Всего: нет |
Всем доброго..., помогите плиз, мне нужно сделать програму парсинга срок в файле, строки это запросы. Мне надо сделать анализ на тип запроса, тоесть разделить, 4-е типа, по типам запроса, потом каждый тип разделить по использованию общих таблиц, полей, условий выборки, группировки и т.д. И в конце каждого из типов я должен буду получить получить четыре группы запросов с максимально большим количеством общих аргументов. Заранее спасибо.
Например 10 Select использующих таблицу T1, одно и тоже поле Р1 из таблицы T1 и т.д и так все 4-е типа. Дайте плиз хотя бы наводку бо я совсем пока незнаю как к этому подойти. |
|||
|
||||
| LSD |
|
|||
![]() Leprechaun Software Developer ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 15718 Регистрация: 24.3.2004 Где: Dublin Репутация: 210 Всего: 538 |
1. Берем StringTokenizer, разбиваем им строку на токены и анализируем ее. Т.е. если среди токенов встретился select, значит это выборка и надо искать после токена select имена столбцов, и т.д.
Минус состоит в том, что могут быть проблемы со сложными запросами типа:
2. Берем готовый парсер SQL, например Zql: a Java SQL parser. Но придется в нем разобраться, и не совсем ясно можно ли в нем варьировать синтаксис входного SQL. 3. Берем генератор парсеров (тот же JavaCC) и создаем свой собственный. Весьма трудоемкая и непростая задача. -------------------- Disclaimer: this post contains explicit depictions of personal opinion. So, if it sounds sarcastic, don't take it seriously. If it sounds dangerous, do not try this at home or at all. And if it offends you, just don't read it. |
|||
|
||||
| s8e8r8g8e |
|
|||
![]() Новичок Профиль Группа: Участник Сообщений: 41 Регистрация: 12.5.2006 Репутация: 1 Всего: 1 |
наверно всё так, кроме того что счас в джавадоке токенайзера написано(1й вариант)
|
|||
|
||||
| Aleksandriys |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 34 Регистрация: 16.8.2006 Репутация: нет Всего: нет |
Вот набрасал кусок
Но как сделать так чтобы читалась строка из файла, Как группировать запросы с общими аргументами? |
|||
|
||||
| LSD |
|
|||
![]() Leprechaun Software Developer ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 15718 Регистрация: 24.3.2004 Где: Dublin Репутация: 210 Всего: 538 |
Как читать строки из файла есть пример в соседнем топике.
А чтобы группировать запросы с общими аргументами, эти аргументы надо вначале выделить из запроса. -------------------- Disclaimer: this post contains explicit depictions of personal opinion. So, if it sounds sarcastic, don't take it seriously. If it sounds dangerous, do not try this at home or at all. And if it offends you, just don't read it. |
|||
|
||||
| Aleksandriys |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 34 Регистрация: 16.8.2006 Репутация: нет Всего: нет |
Для их выделения применяться так называемый клястерный анализ подскажите какую нибудь ссылочку примера реализации на Яве. Спасибо.
Это сообщение отредактировал(а) Aleksandriys - 16.10.2006, 11:56 |
|||
|
||||
| LSD |
|
|||
![]() Leprechaun Software Developer ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 15718 Регистрация: 24.3.2004 Где: Dublin Репутация: 210 Всего: 538 |
Как ты в итоге решил парсить строки, регулярками? И что со сложными запросами (вложенные поздапросы и т.п.)? -------------------- Disclaimer: this post contains explicit depictions of personal opinion. So, if it sounds sarcastic, don't take it seriously. If it sounds dangerous, do not try this at home or at all. And if it offends you, just don't read it. |
|||
|
||||
| Aleksandriys |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 34 Регистрация: 16.8.2006 Репутация: нет Всего: нет |
Небудет у меня вложенных подзапросов, это лишняя головная боль!
|
|||
|
||||
| Aleksandriys |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 34 Регистрация: 16.8.2006 Репутация: нет Всего: нет |
Подскажите плиз как обьединять строки?
|
|||
|
||||
| LSD |
|
|||
![]() Leprechaun Software Developer ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 15718 Регистрация: 24.3.2004 Где: Dublin Репутация: 210 Всего: 538 |
-------------------- Disclaimer: this post contains explicit depictions of personal opinion. So, if it sounds sarcastic, don't take it seriously. If it sounds dangerous, do not try this at home or at all. And if it offends you, just don't read it. |
|||
|
||||
| Aleksandriys |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 34 Регистрация: 16.8.2006 Репутация: нет Всего: нет |
|
|||
|
||||
| LSD |
|
|||
![]() Leprechaun Software Developer ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 15718 Регистрация: 24.3.2004 Где: Dublin Репутация: 210 Всего: 538 |
-------------------- Disclaimer: this post contains explicit depictions of personal opinion. So, if it sounds sarcastic, don't take it seriously. If it sounds dangerous, do not try this at home or at all. And if it offends you, just don't read it. |
|||
|
||||
| Aleksandriys |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 34 Регистрация: 16.8.2006 Репутация: нет Всего: нет |
Мне надо что-то типа.... string = string1.concat(string2).concat(string3)
|
|||
|
||||
| LSD |
|
||||||
![]() Leprechaun Software Developer ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 15718 Регистрация: 24.3.2004 Где: Dublin Репутация: 210 Всего: 538 |
Это делается так:
В результате в str будет "i value = 33Mb". Если надо делать много конкатенаций, то лучше создать StringBuffer и работать с ним:
-------------------- Disclaimer: this post contains explicit depictions of personal opinion. So, if it sounds sarcastic, don't take it seriously. If it sounds dangerous, do not try this at home or at all. And if it offends you, just don't read it. |
||||||
|
|||||||
| Aleksandriys |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 34 Регистрация: 16.8.2006 Репутация: нет Всего: нет |
Подскажите, как получить инфу из запроса про условия выборки и сортировки?
для получения информации о таблицах и колонках используеться такой код
Это сообщение отредактировал(а) Aleksandriys - 23.10.2006, 17:13 |
|||
|
||||
![]()
|
| Правила форума "Java" | |
|
|
Если Вам помогли, и атмосфера форума Вам понравилась, то заходите к нам чаще! С уважением, LSD, AntonSaburov, powerOn, tux, javastic. |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | Java: Общие вопросы | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |