![]() |
|
Модераторы: ginnie, korob2001 |
![]()
|
|
| Strafer |
|
|||
![]() Новичок Профиль Группа: Участник Сообщений: 29 Регистрация: 15.4.2008 Репутация: нет Всего: нет |
Задача найти среди имеющихся имён таблиц совпадение с текущим, если такогового нет то создать
пробывал нечто типа
хотя как сравнить 2 переменные типа char незнаю P.S. Perl учу только вторую неделю |
|||
|
||||
| Itsys |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1338 Регистрация: 21.1.2008 Где: г. Москва Репутация: нет Всего: 34 |
eq - равно, ne - не равно, тебе надо lt заменить на eq
mySQL не знаю, поэтому по поводу запросов подсказать не могу |
|||
|
||||
| shamber |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1422 Регистрация: 5.9.2006 Где: Россия Репутация: 1 Всего: 18 |
Strafer, есть такая штука
создает если не существует |
|||
|
||||
| Strafer |
|
||||||||||
![]() Новичок Профиль Группа: Участник Сообщений: 29 Регистрация: 15.4.2008 Репутация: нет Всего: нет |
Я знаю что такое есть, пробывал реализовывать так но меня застопорила следующая ситуация ......... ладно расскажу принцип действия может будет понятно есть лог который пишет Pure-FTPd выглядит он примерно так
моя задача сделать скипрт который будет по крону читать лог и вносить данные в БД MySQL
это кусок кода из еще отлаживаемого скрипта для каждого логина создаётся таблица и в этой таблице нумируются строки ибо в дальней реализации должно будет быть предусмотрено что данные хранятся не безразмерно, а только за последний год (не календарный а именно 365 дней) P.S. это часть дипломной работы, в данном случае подходит такая ассоциация вот такое задание вопрос снимаю понял всю его тупость
"правилный" код написал в случае если кому то чем то пригодится Это сообщение отредактировал(а) Strafer - 17.4.2008, 17:32 |
||||||||||
|
|||||||||||
| yura_nev |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 14 Регистрация: 28.12.2007 Репутация: нет Всего: нет |
ниже - всего лишь мое ХО...
Strafer, если это заметят - снизят оценку (я бы двойку поставил сразу, не в обиду) нужно создать таблицу логов а в ней просто держать login_id, а логины держать в отдельной таблице. Хотя, конечно если в таблице будет 10 млн записей то это имеет смысл для mysql. а нумерация строк, - это что такое?? ведь вы записываете дату и время (их кстати нужно записывать не отдельнов виде строк, а в виде TIMESTAMP)! есть же ORDER BY, LIMIT, DATE_ADD(), куча функций MYSQL позволяющий работать с датами. |
|||
|
||||
| Strafer |
|
|||
![]() Новичок Профиль Группа: Участник Сообщений: 29 Регистрация: 15.4.2008 Репутация: нет Всего: нет |
yura_nev, даты записаны в виде строк т.к. это даты из самого лога. По поводу отдельной таблицы с логинами хорошая идея спасибо за подсказку. Это кстати исправит появление предупреждений после выполнения
на STDOUT выдаёт ошибку самого мускуля о том что нет такой таблицы. P.S. понял к чему было сказано про отметкувремени вместо номеров строк еще раз спасибо Это сообщение отредактировал(а) Strafer - 23.4.2008, 16:15 |
|||
|
||||
| Strafer |
|
|||
![]() Новичок Профиль Группа: Участник Сообщений: 29 Регистрация: 15.4.2008 Репутация: нет Всего: нет |
я канешна понимаю что тема уже меняет смысл, но все же
это реализация идеи с отдельной таблицей для логинов дальше продвинутся неудалось yura_nev, подскажи пожайлуста или на словах или как переписать код под изменившийся вид таблицы а БД ибо идей ноль |
|||
|
||||
| yura_nev |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 14 Регистрация: 28.12.2007 Репутация: нет Всего: нет |
ммм.. по порядку..
1) насчет дат из лога. я насколько понимаю они в формате YYYY-MM-DD HH:MM:SS соответсвенно все просто, в базе делаем log_date TIMESTAMP, log_time убираем, b инсертим в виде строки "$data $time" (вообще надо и из регэкспа все это в одну перeменную тянуть, можно и вместе с тайм-зоной, mysql не дурак, сам разберется) 2) PRIMARY KEY для таблицы Login должен быть _только_ login_id 3) для таблицы test PRIMARY KEY можно вообще не устанавливать, либо завести фиктивный id с auto_increment'ом обязательно сделать INDEX(log_date)... ну и по всем полям (отдельно!), по которым будет поиск. Поле current_data - убрать (зачем оно вообще?). 4) не понял что тебе не понятно как переписать. инсерт в таблицу test что ли? на словах так: создаешь хеш вида login_name => login_id, чтоб по имени узнавать ID (в начале подгружаешь из таблицы Login) когда пойдешь по логу, перед каждм инсертом заглядываешь в этот хеш и смотришь есть ли там такой логин. если нет, добавляешь новый логин в таблицу логинов, и заносишь айдишник в хеш. вставляешь запись в test с login_id вытащенным из хеша. |
|||
|
||||
| Strafer |
|
||||
![]() Новичок Профиль Группа: Участник Сообщений: 29 Регистрация: 15.4.2008 Репутация: нет Всего: нет |
написал вот такой код ошибок не выдаёт но и ИМХО не работает
пробывал вместо запросов к БД писать просто
P.S.почистил и пересоздал БД, работает только зацикливается как от это избавится ???? Это сообщение отредактировал(а) Strafer - 3.5.2008, 19:50 |
||||
|
|||||
| yura_nev |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 14 Регистрация: 28.12.2007 Репутация: нет Всего: нет |
надо сделать примерно так
|
|||
|
||||
| Strafer |
|
|||
![]() Новичок Профиль Группа: Участник Сообщений: 29 Регистрация: 15.4.2008 Репутация: нет Всего: нет |
Ого мне чтобы дойти до таких навыков пришлось не одну книгу прочитать и побольше практики
пришлось доустановить perl-DBIx-ContextualFetch и еще мне выдало что fetchall нет такого, зато оно заменяется на fetchrow_arrayref Спасибо дружище Ты меня спас честное слово |
|||
|
||||
| yura_nev |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 14 Регистрация: 28.12.2007 Репутация: нет Всего: нет |
не заменяется, если заменить то вместо всех логинов получишь только один.
надо просто в DBI->connect()'е в поледний параметр (тот что HASHREF) добавить
Это сообщение отредактировал(а) yura_nev - 5.5.2008, 17:59 |
|||
|
||||
| Strafer |
|
||||
![]() Новичок Профиль Группа: Участник Сообщений: 29 Регистрация: 15.4.2008 Репутация: нет Всего: нет |
странно, но даже без добавления этого кода все работает и с добавлением работает
щас пытался прикрутить интерфейс который я писал на php и заметил что логины записаны в виде hex string тобишь
это данные сделаные дампом, а это
простым просмотром. Так что сейчас пытаюсь сделать так чтобы php видел все красиво а не кучу цифирок P.S. главно что лог парсится без ошибок |
||||
|
|||||
![]()
|
| Правила форума "Perl: Системное программирование" | |
|
|
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, korob2001, sharq. |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | Perl: Системное программирование | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |