Импорт MySQL в Postgres. Проблемы с разрешениями
У меня есть базы данных MySql и Postgres. Я работал над Mysql DB, которая заполнена моими данными. Теперь для того, чтобы я использовал героку, мне нужно перенести его на Postgres. Вот шаги, которые я выполнил:
Я экспортировал данные из моей базы данных Mysql простой командой dump:
mysqldump -u [uname] -p[pass] db_name > db_backup.sql
Я вошел в свой Postgres
sudo su postgres
Теперь, когда я пытаюсь импортировать sql в Postgres, он не имеет доступа к db_backup.sql. Я изменил разрешения для всех пользователей и сделал файл дампа для чтения / записи для всех, но я все еще не могу импортировать sql.
Мой вопрос заключается в том, как правильно дублировать (и схему, и данные) из Mysql в Postgres. Кроме того, почему я не могу получить доступ к файлу дампа даже после изменения разрешений? И если у меня есть дамп из Mysql, каковы шансы, что он столкнется с проблемами при запуске его на Postgres (у меня нет никаких процедурных вещей в моем Mysql. Просто создание таблиц и сброс данных в эти таблицы.)?
Спасибо!
PS Я на Mac-Mavericks, если это имеет значение
1 ответ
В то время как на основную часть вопроса отвечал @wildplasser, я думал, что поставлю полный ответ для людей, которые смотрят на перенос данных MySQL в Postgres.
После опробования нескольких решений, самое простое и довольно гладкое решение было следующим: https://github.com/lanyrd/mysql-postgresql-converter
Это работало довольно гладко. Но только одна проблема - он не переносит никакие последовательности Mysql в Postgres. Это означает, что если у вас есть автоинкрементные первичные идентификаторы, вам придется изменить свою схему Postgres отдельно и создать последовательные последовательности после завершения портирования. Кроме того, это было довольно гладко.
Чтобы поговорить о проблеме с разрешениями, войти в систему как пользователь Postgres и попытаться получить доступ к дампу, созданному исходным пользователем, не удалось, правильным способом было оставаться в системе как оригинальный пользователь и использовать пользователя postgres только для работы с БД с помощью команды -U postgresuser,
Например: psql -U postgres databasename < data_base_dump
В то время как для многих это должно быть очевидным способом сделать это, я должен признать, что это был один из тех моментов эврики для меня:)