четверг, 12 мая 2011 г.

Конвертация даты из внутреннего формата MSSQL

Переводил базу из MsSQL в MYSQL. Стандартные инструменты из MySQL Migration Toolkit оказались бессильны перед этой базой - кодировка портилась, хоть тресни. Пришлось конвертить ручками, через SQL скрипты. Все было хорошо.. пока не обнаружилось, что в MSSQL-ном скрипте в некоторых таблицах данные типа DateTime оказались записаны в виде:
CAST(0x00008F5800000000 AS DateTime) //2000-06-21 00:00:00
CAST(0x00008F5900000000 AS DateTime) //2000-06-22 00:00:00
Это - внутренний формат даты в MSSQL. Вопрос - как из внутреннего формата преобразовать дату в нормальный вид?

вторник, 10 мая 2011 г.

Перенос данных с Firebird 1.5 на Firebird 2.5

Появилась необходимость перетащить базу с Firebird 1.5 на Firebird 2.5. После полуторки были еще FB 2.0 и FB 2.1, структура базы поменялась значительно. Почитал форумы - выяснилось, что наиболее надежный способ переноса базы - заново пересоздавать базу из скриптов на FB2.5.

С переносом метаданных все понятно - с помощью IBExpert извлекаем метаданные (команда Extract Metadata) из базы под FB 1.5 и создаем новенькую пустую базу на FB 2.5. А вот как перетаскивать сами данные?

Несмотря на то, что в IBExpert есть множество средств импорта/экспорта данных, готового инструмента для переноса данных между базами - нет. К счастью, IBExpert поддерживает мощный скриптовый язык IBEBlock. И на нем достаточно просто создать скрипт с требуемой функциональностью. Далее расскажу подробнее о получившемся скрипте и опишу итоговую процедуру переноса базы с FB1.5 на FB2.5.