Записки программиста, обо всем и ни о чем. Но, наверное, больше профессионального.

2011-01-26

FDO Toolbox

Замечательная штука, реально выручила.

После серии попыток использования шейпов в проекте на Топобейс, мы решили загрузить шейпы в Oracle-евую БД. Ибо ни так (напрямую) ни сяк (загрузив в репозиторий проекта в SDF) ни жопой об косяк (перекодировки) — вместо русских буков одни закорючки.
Полдня грузили шейпы в базу Топобейсовым булкопи (есть такая функция в ем — bulk copy). Вроде загрузилось, трупобейс клянется, что загрузил всё. Проверяем — половина таблиц пустая, половина прогружена наполовину :)
Сраньгосподня.

После чего взяли FDO Toolbox и за час-другой все залили в базу. По ходу проблема была ровно одна — в одном из шейпов попытались залить строковое поле в поле числового типа (трабла типа «самдурак»). Понятно — не получилось. Поправили и как по маслу, вжик и готово. Хотя про «вжик» это я погорячился, тулза тормозная, сотню тысяч записей грузить может более часу. И не использует многопроцессорность.


Первая из серии статей про работу с растрами в ГИС. Фактически — учебник.

4 комментария:

  1. Уважаемый автор, подскажите, пожалуйста, нужно ли перекодировать данные перед заливкой их в БД посредством FDO Toolbox(у меня PostGIS c кодировкой UTF-8)? И как это сделать? У меня есть догадка, что надо написать скрипт IronPython-ом и заставить FDO Toolbox его исполнять в момент экспорта данных.

    ОтветитьУдалить
  2. > нужно ли перекодировать данные перед заливкой их в БД посредством FDO Toolbox(у меня PostGIS c кодировкой UTF-8)?

    У меня нет опыта заливки данных в PostGIS, поэтому могу только общие соображения выдать.
    Как бы сделал я: сначала попробовал бы по простому, не заморачиваясь, с настройками по умолчанию, залить одну небольшую табличку (фичекласс). По результатам уже смотреть.
    Если кракозябры, то оценить, что проще - переконвертировать текст в исходниках или добавить шаг трансформации при загрузке. И попробовать еще пару раз. Если на тестовом кусочке все хорошо, можно приступать к полной загрузке.
    В Python перекодировка текста выполняется обычно в два шага:
    str = 'text'.decode('utf8') # на выходе юникод, сделанный из ютф8
    str = str.encode('cp1251') # на выходе виндовая кодировка, сделанная из юникода

    ОтветитьУдалить
  3. Огромное спасибо за оперативность! Как это "юникод, сделанный из ютф8"?
    И вопрос-то как раз в том, КАК добавить шаг трансформации при загрузке? дело в том, что у меня маловато опыта. Буду признательна, если подскажете! )

    Дополнительная информация:
    FDO Tools при попытке загрузить что-либо в базу ругается, что invalid byte "символ" at position 2 of 3-byte sequence (Occured in an unknown entity, at line 1, column 1) и далее многа букаф. При этом прочими общепризнанными средствами все дивно в базу заливается (эти средства заливают каждое свой формат данных и не заливают автокад, поэтому мне не подходят). И FDO спокойно читает уже залитые таблицы этой базы.

    ОтветитьУдалить
  4. > Как это "юникод, сделанный из ютф8"?
    Это просто, на входе строка в кодировке utf8 а на выходе строка в юникод.

    > FDO Tools при попытке загрузить что-либо в базу ругается
    Видимо, тулбокс не понимает, в какой кодировке исходные данные. Когда я грузил из шейпов (атрибутика в DBF), строки в дбф-ках были в кодировке cp1251, что указывалось в доп.файлах с расширением CPG.
    Какой у Вас формат исходных данных, я не знаю. Если бы Вы прислали небольшую выборку тестовых данных, я бы мог предметно покрутить тулбокс. Если захотите, пишите на vasnake@gmail.com

    ОтветитьУдалить

Архив блога

Ярлыки

linux (241) python (191) citation (186) web-develop (170) gov.ru (159) video (124) бытовуха (115) sysadm (100) GIS (97) Zope(Plone) (88) бурчалки (84) Book (83) programming (82) грабли (77) Fun (76) development (73) windsurfing (72) Microsoft (64) hiload (62) internet provider (57) opensource (57) security (57) опыт (55) movie (52) Wisdom (51) ML (47) driving (45) hardware (45) language (45) money (42) JS (41) curse (40) bigdata (39) DBMS (38) ArcGIS (34) history (31) PDA (30) howto (30) holyday (29) Google (27) Oracle (27) tourism (27) virtbox (27) health (26) vacation (24) AI (23) Autodesk (23) SQL (23) humor (23) Java (22) knowledge (22) translate (20) CSS (19) cheatsheet (19) hack (19) Apache (16) Klaipeda (15) Manager (15) web-browser (15) Никонов (15) functional programming (14) happiness (14) music (14) todo (14) PHP (13) course (13) scala (13) weapon (13) HTTP. Apache (12) SSH (12) frameworks (12) hero (12) im (12) settings (12) HTML (11) SciTE (11) USA (11) crypto (11) game (11) map (11) HTTPD (9) ODF (9) Photo (9) купи/продай (9) benchmark (8) documentation (8) 3D (7) CS (7) DNS (7) NoSQL (7) cloud (7) django (7) gun (7) matroska (7) telephony (7) Microsoft Office (6) VCS (6) bluetooth (6) pidgin (6) proxy (6) Donald Knuth (5) ETL (5) NVIDIA (5) Palanga (5) REST (5) bash (5) flash (5) keyboard (5) price (5) samba (5) CGI (4) LISP (4) RoR (4) cache (4) car (4) display (4) holywar (4) nginx (4) pistol (4) spark (4) xml (4) Лебедев (4) IDE (3) IE8 (3) J2EE (3) NTFS (3) RDP (3) holiday (3) mount (3) Гоблин (3) кухня (3) урюк (3) AMQP (2) ERP (2) IE7 (2) NAS (2) Naudoc (2) PDF (2) address (2) air (2) british (2) coffee (2) fitness (2) font (2) ftp (2) fuckup (2) messaging (2) notify (2) sharepoint (2) ssl/tls (2) stardict (2) tests (2) tunnel (2) udev (2) APT (1) Baltic (1) CRUD (1) Canyonlands (1) Cyprus (1) DVDShrink (1) Jabber (1) K9Copy (1) Matlab (1) Portugal (1) VBA (1) WD My Book (1) autoit (1) bike (1) cannabis (1) chat (1) concurrent (1) dbf (1) ext4 (1) idioten (1) join (1) krusader (1) license (1) life (1) migration (1) mindmap (1) navitel (1) pneumatic weapon (1) quiz (1) regexp (1) robot (1) science (1) seaside (1) serialization (1) shore (1) spatial (1) tie (1) vim (1) Науру (1) крысы (1) налоги (1) пианино (1)