| Summary: | Перенос данных из rusk.ru | ||
|---|---|---|---|
| Product: | [Веб-разработка (Web development)] ИС Мироздание | Reporter: | Vitaly Lipatov <lav> |
| Component: | База данных | Assignee: | Алексей Матвеев <mms> |
| Status: | CLOSED FIXED | QA Contact: | |
| Severity: | normal | ||
| Priority: | P2 | ||
| Version: | не указана | ||
| Target Milestone: | I этап | ||
| Hardware: | PC | ||
| OS: | All | ||
| Whiteboard: | |||
| Заявки RT: | Связано с: | ||
| Дата напоминания: | |||
| Bug Depends on: | |||
| Bug Blocks: | 2453 | ||
| Deadline: | 2008-10-21 | ||
|
Description
Vitaly Lipatov
2008-10-09 19:26:14 MSD
первый пункт сделан. Со вторым пока наблюдаются некоторые проблемы, но скоро будут исправлены. Нашёл :) Суть в том, что timestamp в базах SQL - вещь довольно абстрактная (там используется какой-то странный тип данных, сравнивать которые сложно - rowversion (timestamp)) т.е. к чему я веду - нужно конвертировать в запросе timestamp в удобоваримый формат (http://dev.mysql.com/doc/refman/5.1/en/cast-functions.html - вот так это делается) и потом уже со спокойной душой сравнивать. Сейчас запустим на тестирование. конвертировать будем в date, наверное. на форуме rsdn.ru нашёл очень "горячее" обсуждение на этот счёт - http://rfd.rsdn.ru/forum/message/2024825.flat.aspx :) Решение проблемы здесь - http://www.mysql.ru/docs/man/DATETIME.html timestamp выгружается в виде YYYYMMDDHHMMSS (если это timestamp(14) - по умолчанию в MySQL он и есть) т.е. и для сравнения дату необходимо было генерировать в таком же формате. Протестировал - база наполняется. Когда добавятся новости на rusk, протестируем уже "на живом материале". Пока не fixed - ждём новостей. После решения общей проблемы переноса нужно переделать скрипт переноса на работу с PostgreSQL. В скрипте переноса учесть диапазоны id, которые не надо переносить (статьи других проектов) - прочитать можно в протоколе С.М. Протокол? Ссылка или на e-mail можно? Скрипт переделан и отлажен под перенос в pg. Надо разобраться и доделать скрипт переноса обновлений, запустить его на cron. Наконец-то :) В общем, есть в MySQL функция TIMESTAMP('YY-MM-DD H:M:S') так вот она и переводит строку в timestamp для дальнейшего сравнения с timestamp из таблицы в БД (кстати, формат строки может и не содержать, например, часы, минуты и секунды). Всё работает, теперь нужно rusktomir.sh запускать на cron (сейчас там стоит перенос за последний день). По состоянию на 17.11.08 16:51 все данные перенесены. Полный перенос (без учёта timestamp) запускается из rusktomir_full.sh (просто дата сравнения поставлена 0000-00-00 00:00:00, а так они ничем не различаются).
Поставили на cron rusktomir.sh, запускается через каждые 2 часа. |