Interbase поразил очевидностью своей эксплуатации.
Была задача извлечь из .gdb файла содержимое и перелить в другую БД. Сразу скажу, что с Interbase я вообще никогда не сталкивался, поэтому рассуждения, что называется, с нуля.
Может быь я действительно такой криворукий, но мне не удалось ни запустить JDBC драйвер, ни воспользоваться родным клиентом.
Не буду упоминать все исхоженные пути, просто изложу самый короткий и работающий:
# emerge firebird -v
# cp /path/to/your/database-file.gdb /usr/lib/firebird/
На любителя, можно еще для гарантии добавить:
# chmod 666 /usr/lib/firebird/database-file.gdb
$ fbsql -u SYSDBA -p masterkey /usr/lib/firebird/database-file.gdb -ch WIN1251
Database: /usr/lib/firebird/database-file.gdb, User: SYSDBA
SQL>
Ура! В этот момент мы имеем работающую БД и консольку, откликающуюся на запросы.
Почему базу скопировали в /usr/lib/firebird ?
Потому что иначе не будет работать нестандартная кодировка. Можно настроить т.н. embeded вариант, но он предполагает наличие ./intl/fbintl.so в папке с программой, т.е. fbsql.
Я пробовал добавить это в папку с файлом базы, т.к. в Windows это кажись работало (как это делают в программах от Борланда, прости, Господи):
$ mkdir ./intl
$ cp /usr/lib/firebird/fbintl.so ./intl/
однако нифига счастливого не произошло. Будет дешевле скопировать саму базу куда положено.
Проверим, все ли так, как нам надо:
SQL> show tables;
SQL> select * from any_table;
Ну, а дальше все банально:
$ echo "select * from any_table;" > query.sql
$ fbsql -u SYSDBA -p masterkey /usr/lib/firebird/database-file.gdb -ch WIN1251 -i query.sql -o result-1251.txt -pag 99999
$ iconv -f cp1251 -t utf8 result-1251.txt > result-utf.txt
Теперь в result-utf.txt имеем выковыренные запросом данные. Изменение их вида и перегон в другую БД оставлю читателю.
P.S. все вышенаписанное проделано на Gentoo.
понедельник, 21 апреля 2008 г.
Потрошим Interbase .gdb файлы
Метки:
database export,
firebird,
gentoo,
interbase
Подписаться на:
Комментарии к сообщению (Atom)
2 комментария:
Господи, какое же говнище, всё-таки этот интербейз.
Возможно, но речь шла о фаербёрде, в отличии от которого все остальные открытые проекты уж точно говно(в т.ч. и МйСКЛ) . Что касается портажа, то лучшеб его не было(то же касается и FreeBSD).
Отправить комментарий