![]() |
Модераторы: korob2001, ginnie |
![]() ![]() ![]() |
|
Alex089 |
|
|||
Новичок Профиль Группа: Участник Сообщений: 13 Регистрация: 17.3.2007 Репутация: нет Всего: нет |
Добрый день!
Есть скрипт создания базы данных MS SQL Server. Нужно вытащить из него и поместить в другой файл все операторы CREATE TABLE и CREATE TRIGGER (если эти операторы находятся внутри комментариев и/или строк, их извлекать не нужно) так, чтобы один оператор занимал одну строку. Подскажите, пожалуйста, на сколько сложно это реализовать на Perl и как примерно это можно сделать? Присоединённый файл ( Кол-во скачиваний: 6 ) ![]() |
|||
|
||||
arto |
|
|||
Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1495 Регистрация: 31.10.2004 Репутация: 38 Всего: 40 |
perl -lne 'print if (m#^CREATE (?:TABLE|TRIGGER)# .. m#^GO#)' ?
|
|||
|
||||
Alex089 |
|
|||
Новичок Профиль Группа: Участник Сообщений: 13 Регистрация: 17.3.2007 Репутация: нет Всего: нет |
Так не получится. Если GO встретится в криэйте или триггере как часть строки или комментария, то будет обработан, как окончание тела оператора, а sql-интерпритатор ищет GO вне строк и комметариев. Да и сами CREATE TABLE и CREATE TRIGGER могут быть внутри строк и комментариев
![]() |
|||
|
||||
arto |
|
|||
Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1495 Регистрация: 31.10.2004 Репутация: 38 Всего: 40 |
вы дали текст.
теперь даете новые условия. дайте сразу текст с условиями. пс. пока ваш текст обрабатывает. Это сообщение отредактировал(а) arto - 17.4.2010, 12:50 |
|||
|
||||
Alex089 |
|
|||
Новичок Профиль Группа: Участник Сообщений: 13 Регистрация: 17.3.2007 Репутация: нет Всего: нет |
Прошу меня простить. Вот такой скрипт
ps Как вы запускали этот парсер? У меня пишет
Присоединённый файл ( Кол-во скачиваний: 4 ) ![]() |
|||
|
||||
arto |
|
|||
Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1495 Регистрация: 31.10.2004 Репутация: 38 Всего: 40 |
perl -0777 -nle 'while (m#^\s*(CREATE\s+(?:TABLE|TRIGGER).+?)^\s*GO#gsmi) { print $1 }'
из командной строки пс. если надо очень хитрое, то perldoc SQL::Translate, либо напрямую Parse::RecDescent. |
|||
|
||||
Alex089 |
|
|||
Новичок Профиль Группа: Участник Сообщений: 13 Регистрация: 17.3.2007 Репутация: нет Всего: нет |
Нашел такой исходник:
Он убирает из строки комментарии в стиле C/C++, при этом правильно обходит строковые литералы. Можно сделать, чтобы он убирал еще и однострочные комментарии SQL? Или сделать поиск CREATE TABLE ... GO вне строк и комментариев? |
|||
|
||||
![]() ![]() ![]() |
Правила форума "Perl" | |
|
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, korob2001, sharq. |
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | Perl: Общие вопросы | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |