Назад | Перейти на главную страницу

Не могли бы вы объяснить экспорт, а затем импорт PostgreSQL с помощью phpPgAdmin? (А что с разрешениями?)

Bounty Edit: я оставил исходный вопрос, но хотел бы получить хороший ответ на весь фиаско с разрешениями, в котором, похоже, купается Postgres.
'Импорт и экспорт клиентских баз данных: полевое руководство '

Я получил эту работу сегодня, где нам нужно использовать PostgreSQL.

У клиента два хоста, и они используют только phpPgAdmin для доступа к базе данных. Нет SSH.

Нам нужно экспортировать данные, а затем импортировать их на локальную машину разработчика.

Быть мудрым на пути MySQL Я немного заблудился в правильном процессе.

Там PostgreSQL >> база данных >> экспорт
и оттуда получается:

Я просматривал документацию, но, честно говоря, я не могу найти простого объяснения и на данный момент мне наплевать на db или Postgres. Все, что нам нужно сделать, это взяться за сайты PHP.

Ударь меня синопсисом / шпаргалкой / руководством по моим системным админкам.

Редактирует:
Изменен вопрос, чтобы включить разрешения PostgreSQL на импорт базы данных.
Что касается разрешений, то действительно кажется, что нужно больше настроить новый сервер PostgreSQL.

Я спрашиваю конкретно о phpPgAdmin, потому что мой сервер не является локальным и не имеет графического интерфейса.

У меня такое ощущение, что это вопрос разрешений http://pgedit.com/public/sql/acl_admin/index.html

Уточнено отсутствие SSH на поле клиентов.

По-прежнему не могу найти краткую документацию по этому процессу. Я действительно избегаю задачи, пока не увижу более четкое представление. Возможно, вам будет проще преобразовать в базу данных MySQL.

Экспорт

  1. Авторизоваться
  2. Перейдите на вкладку «Экспорт».
  3. Установите переключатель "Структура и данные".
  4. Установите переключатель "Загрузить".
  5. Нажмите кнопку «Экспорт» и сохраните его на локальном компьютере.

Импортировать

  1. Перейдите к http://www.pgadmin.org/ скачивать pgAdmin III (один из лучших бесплатных инструментов графического интерфейса Postgres)
  2. Установите это
  3. Используйте его для всех ваших нужд Postgres.

Экспорт phpPgAdmin использует pg_dump. Вы можете прочитать об этом, если хотите знать, что он делает.

Вы также можете экспортировать его как SQL вместо COPY. COPY предназначен для Postgres, и вам понадобится SQL, если вы хотите попробовать использовать другую базу данных. Также легче понять, если вы использовали разные базы данных.

С «Структурой и данными» вы получите sql-файл, который будет начинаться со структуры таблицы базы данных, затем всех данных, а затем ограничений и ключей.

Как указал sascha, у вас могут быть проблемы с разрешениями. Мне всегда было проще просто удалить строки разрешений или закомментировать их, поскольку это только для базы данных разработки. Удалите / прокомментируйте / измените строки с «ВЛАДЕЛЬЦЕМ» в них. подобно

ALTER TABLE schema.table OWNER TO pguser;

Каждый оператор CREATE TABLE будет иметь один из них после него, чтобы установить владельца таблицы.

ИМПОРТ

Если у вас есть ошибки SQL (которые я видел довольно часто, в зависимости от данных. Строки с нечетными символами могут быть проблемой), может быть проще разделить файл и просто сначала скопировать структуру и запустить ее как стандарт SQL-запрос. Затем начните с данных и импортируйте их по одной таблице за раз. Это значительно упрощает поиск ошибки, если разрезать ее на части. Особенно при работе с очень бесполезными сообщениями об ошибках.

Да, это большая работа по копированию и вставке, но она выполняет свою работу и, вероятно, займет меньше времени, чем перенос ее в MySQL, а затем необходимость изменения PHP для подключения и получения данных из MySQL вместо Postgres.

И PhpPgAdmin, и pgadminIII могут выполнять операторы SQL.

pgAdminIII -> выберите базу данных -> выберите кнопку «Выполнить произвольные SQL-запросы». PhpPgAdmin -> выберите базу данных -> выберите ссылку «SQL».

Честно говоря, это наименее раздражающий способ перемещения баз данных, который я нашел. Это займет больше времени, но только если вы не столкнетесь с ошибками.

Что касается разрешений, просто откройте дамп базы данных (это обычный текст) и найдите строки, в которых он пытается изменить текущего пользователя или устанавливает владельца таблицы. Затем просто выполните поиск / замену и замените первоначального владельца своим новым именем пользователя. Не нужно вообще беспокоиться о предоставлении / изменении разрешений: D

Раньше нам приходилось делать это все время при переходе от разработки к производству, исходным владельцем базы данных / таблицы был разработчик, и нам нужно было изменить это на учетную запись клиента, как только мы были готовы к запуску.

Мы всегда работали с консоли, используя pg_dump и другие связанные инструменты командной строки, но я ожидаю, что они будут соответствовать параметрам, которые у вас есть в веб-интерфейсе.

Беги, не уходи от хостинг-провайдера. Вам нужен прямой доступ к данным не только через phppgadmin.

phppgadmin (а ​​также phpmyadmin) в этих случаях создает огромную проблему. Получить свалки не получится.

Рассуждение: с PHP и apache у вас есть макс. время выполнения, а также ограничение памяти для запущенных скриптов. Сейчас это может не быть проблемой с точки зрения времени выполнения / памяти, но по мере роста вашей базы данных вы столкнетесь с ней.

Чтобы получить хороший дамп, вам, по крайней мере, понадобится доступ к базе данных (который, если БД напрямую подключен к сети, конечно, должен быть защищен SSL). Будь то через SSH или напрямую через psql, иначе я не вижу хорошего варианта получения дампов. phppgadmin (или phpmyadmin) может быть удобен для просмотра через БД, вносить некоторые изменения, делать некоторые (меньшие) выборки и так далее, но не в том случае, если вам нужно получить возможно большие объемы данных.

У меня оба инструмента не работали в разных случаях с тайм-аутом PHP или слишком большим использованием памяти при выполнении резервного копирования / восстановления.

Что касается руководства по резервному копированию, оригинальная документация postgres обычно очень хороша: http://www.postgresql.org/docs/8.3/static/backup.html

Теперь о вашей проблеме, как получить хороший дамп БД:

  • Используйте "нормальный" формат SQL (да, в документации сказано, что он намного медленнее, но я считаю его наиболее надежным вариантом)
  • Не «показывайте» дамп в phppgadmin, а загружайте его (сжатый или нет, может работать или не работать в зависимости от установки php и времени, необходимого для создания дампа, на самом деле то же самое верно и для опции «показать»)

Я не могу не напрячься, чтобы получить доступ SSH или psql напрямую к хосту. Если ваш хостинг-провайдер не предоставляет вам доступ, настройте локальный PostgreSQL, создайте базу данных для игровой площадки и отправьте им команду pg_dump, которую вы хотите использовать, позвольте им поместить ее в каталог, защищенный SSL и паролем, и загрузите ее оттуда.