Bug 2573

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
1. Нужен перенос всех данных rusk.ru, в том числе новостей.
2. Нужен скрипт переноса только обновлённой информации (для запуска по крону).
Comment 1 Алексей Матвеев 2008-10-10 14:10:57 MSD
первый пункт сделан. Со вторым пока наблюдаются некоторые проблемы, но скоро будут исправлены.
Comment 2 Алексей Матвеев 2008-10-16 14:05:56 MSD
Нашёл :) Суть в том, что timestamp в базах SQL - вещь довольно абстрактная (там используется какой-то странный тип данных, сравнивать которые сложно - rowversion (timestamp)) т.е. к чему я веду - нужно конвертировать в запросе timestamp в удобоваримый формат (http://dev.mysql.com/doc/refman/5.1/en/cast-functions.html - вот так это делается) и потом уже со спокойной душой сравнивать. Сейчас запустим на тестирование.
Comment 3 Алексей Матвеев 2008-10-16 14:09:08 MSD
конвертировать будем в date, наверное.

на форуме rsdn.ru нашёл очень "горячее" обсуждение на этот счёт - http://rfd.rsdn.ru/forum/message/2024825.flat.aspx :)
Comment 4 Алексей Матвеев 2008-10-16 14:33:14 MSD
Решение проблемы здесь -
http://www.mysql.ru/docs/man/DATETIME.html

timestamp выгружается в виде YYYYMMDDHHMMSS (если это
timestamp(14) - по умолчанию в MySQL он и есть) т.е. и
для сравнения дату необходимо было
генерировать в таком же формате.
Протестировал - база наполняется. Когда
добавятся новости на rusk, протестируем уже
"на живом материале". Пока не fixed - ждём
новостей.
Comment 5 Vitaly Lipatov 2008-10-16 14:40:33 MSD
После решения общей проблемы переноса 
нужно переделать скрипт переноса на работу с PostgreSQL.
Comment 6 Vitaly Lipatov 2008-10-29 16:49:08 MSK
В скрипте переноса учесть диапазоны id, которые не надо переносить (статьи других проектов) - прочитать можно в протоколе С.М.
Comment 7 Алексей Матвеев 2008-10-30 17:31:10 MSK
Протокол? Ссылка или на e-mail можно?
Comment 8 Алексей Матвеев 2008-11-13 17:37:23 MSK
Скрипт переделан и отлажен под перенос в pg.
Comment 9 Vitaly Lipatov 2008-11-15 13:11:23 MSK
Надо разобраться и доделать скрипт переноса обновлений,
запустить его на cron.
Comment 10 Алексей Матвеев 2008-11-17 16:58:34 MSK
Наконец-то :) В общем, есть в 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, а так они ничем не различаются).
Comment 11 Алексей Матвеев 2008-11-17 17:06:36 MSK
Поставили на cron rusktomir.sh, запускается через каждые 2 часа.