почему именно постгре? Если умеете работать с мусклом и с ним вам проще - юзайте его, осмосис умеет в него писать
посмотрите в вашей базе, пустой, есть ли там таблица schema_info. Если нет - значит скрипт, которым вы создавали базу устаревший. К сожалению разработчики осмосиса и базы ОСМ очень часто забывают обновлять инфу в вики - она там может отставать на несколько изменений схемы базы
У меня осм под постгре запущен, но не просто под постгре, а под связку постгре+постгис. Не знаю, нужно ли вам такое. ибо это под довльно специфические задачи и существенно сложнее в эксплуатации - двое-трое суток на импорт и потом еще двое-трое на построение индексов.
Что могу предложить - если вы захотите перейти на мускл - я вам могу скинуть актуальную схему базы данных, 100% соответствующую текущей ОСМовской. Ну или такую же актуальну. но для постгре.
Сначала выбрал потому что сам openstreetmap перешел на PostgreSQL, но вобще постгри мне даже больше понравился.
Саму базу я пока поднял под виндой… хотя винда эта в виртуальной машине на убунте крутится. Для тестов пока достаточно.
Если дело в том, что у них обновления выкатываются несвоевременно, то думаю можно и постгри юзать.
Нашел какой-то скриптец… http://trac.openstreetmap.org/browser/sites/rails_port/db/create_database.sql?rev=2778 двухлетней давности, там тоже нет schema_info. Других sql-файлов в svn не нашел, может там как-нибудь из кода базу создают… должно же оно где-то обновляться(
В своей тестовой базе schema_info я не нашел, есть только schema_migrations… в ней содержаться все версии… числа от 1 до 25… я так понял версии базы.
По ссылке http://gweb.bretth.com/apidb06-pgsql-latest.sql должен ведь лежать самое последнее обновление… т.к. “latest”, если это конечно относится к svn как-нибудь. На данный момент apidb06-pgsql-latest.sql это как раз 25 версия.
В комментах в этом файле стоит дата:
--
-- PostgreSQL database dump
--
-- Started on 2009-04-19 13:20:00 EST
Кстати, слышал что есть девелоперский сервер, на который можно залезть и что-нибудь там поделать…
можно ли оттуда снимать дамп базы без данных при необходимости?
Ezhick, выложите, пожалуйста, sql для постгри, если заработает буду сидеть на этой базе)
При установке постгри постгис у меня установился, базу создал… у него в базе куча вспомогательных функций.
Правильно обновление базы происходит через ruby-скрипт в составе rails port. Подробности по нему - в вики. Суть - можно поднять у себя сервер, идентичный ОСМовскому. И обновлять его из svn. Оттуда же обновится и схема базы. Именно ее я вам и предлагаю выложить. Учитывая просьбы коллег - выложу сюда. Но только завтра, сейчас очень спать хочется.
Я под виндой завести это все не смог, плюнул и поставил убунту. В ней все ок. Только вот производительности моего компа под полнуй дамп планеты маловато… Видимо придется строить отдельные производные таблицы под интересующие регионы, ибо апгрейд сервера пока не планировался…
Ezhick, спасибо еще раз!
Настроил базу под убунтой, постгри настроил, dump.sql залился с первого раза и без ошибок, база создана!
Попробовал импортнуть osmosis’ом кусок Москвы… получаю те же ошибки что и под виндой(((
Осмосис, кстати, заработал после небольших мучений) Ничего в нем руками не допиливал…
Импорт делаю двумя скриптами, лежат они в osmosis-0.31 в папке bin
run.sh
clear all
./osmosis --read-xml-0.6 file="test.osm" --write-pgsql-0.6 host="localhost" database="osmdb" user="postgres" password="postgres"
При запуске в ошибках получаю:
Caused by: org.postgresql.util.PSQLException: ERROR: отношение "schema_info" не существует
Caused by: org.postgresql.util.PSQLException: ERROR: констрейнт "pk_users" не существует
Не понимаю в чем дело… опять что-то с базой? В вашем последнем дампе schema_info нету, да и чего это такое вообще… может ее уже убрали уже, а osmosis 0.31 не последняя версия?
Кстати, а какое железо сейчас стоит? Если запрашивать небольшие области, то PostgreSQL запрос долго выполняет?
С чистым xml даже пытаться не хочу работать… это же ужас… в десятках гигов искать)
железо - p4 - 2,52, 1.5 Гб памяти. По запросам ничего не скажу - поставил, настроил обновление и на большее просто не было времени. Но импорт .построение индексов и постгисовских колонок занял чуть ли не неделю…
UPD
попробовал простенький запрос
select way_id from way_tags where k = ‘oneway’ and v = ‘no’ limit 1000
Кстати, есть ще одна схема базы под посгре - постгре+постгисовская. Строится скриптами из осомсиса (см. папку scripts в осмосисе). Там добавляются постгисовские колонки дополнительные. Вот в нее осмосис у меня импорт делает без проблем!
В папке scripts нашел
pgsql_simple_schema_0.6.sql – Это я так понял структура самой базы, остальные не знаю для чего
pgsql_simple_schema_0.6_action.sql
pgsql_simple_schema_0.6_bbox.sql
pgsql_simple_schema_0.6_linestring.sql
Там есть schema_info, кстати!
Но структура маленькая, нету функций, например… типы какие-то не известны.
Я так понял это накидывается на postgis’овскую базу… в вашем дампе функции были. поэтому я взял отправил на базу запросы из dump.sql, а потом из pgsql_simple_schema_0.6.sql
чего-то там было, ошибки какие-то что мол уже существует…
при импорте словил
Caused by: org.postgresql.util.PSQLException: ERROR: нельзя удалить констрейнт pk_users на таблица users по причине наличия зависимых объектов
на schema_info вроде уже не жалуется.
У девелоперов нету образа виртуальной машины с установленным сервером?
Где-то в вики проскакивало что-то подобное… нийти не могу
Там используется osm2pgsql который режет инфу под мапник, схема будет неполная. Я точно не знаю, что он режет ,но это будет совсем не зеркало родной базы!!!
Пытаюсь поднять рабочую копию базы с помощью осмосиса, но столкнулся с проблемой, с которой тут как раз пытаются помочь.
Caused by: org.postgresql.util.PSQLException: ERROR: constraint "pk_users" does not exist
Взял дамп.скл, который предложил Ежик. Проблема осталась
Взял транк из свна, поправил исходники немного (осмосис дропает индексы перед началом импорта), пересобрал, запустил… Свалилось на импорте пользователей
Дальше править исходники не стал - слишком разные схемы базы.
Вопрос - под какую версию АПИ выложен дамп.скл? --write-pgsql-0.5 не пошел, --write-pgsql-0.6 тоже не пошел, что удивительно но и простой write-pgsql не работает.
Еще вопрос - я так понимаю, что единственным адекватным способом поставить себе копию базы - это руби и скрипты? Взять схему базы и просто влить туда данные осмосисом не получится? Мне не нужна полная копия земля.осм, нужен лишь небольшой кусочек.
Мы для схожей задачи использовали osm2pgsql. Правда список полей не правили, но там ест файл default.style - как я понимаю с помощью него можно настроить набор полей БД.
Вполне работоспособный вариант - проверено.