Найти в Дзене
Phoin

Экспорт/импорт базы данных PostgreSQL

Данная статья описывает процесс экспорта и импорта базы данных postgresql на Linux но эти же команды можно адаптировать и к Windows. Немного теории, для начала разберем какие дампы базы данных бывают и так если дамп был скачан допустим с официального сайта PostgreSQL (демонстрационная база данных) или из другого популярного источника то такой дамп содержит все необходимое для импорта(то есть не только структуру таблиц и данные к ним но и саму базу данных которую можно спокойно импортировать). А теперь рассмотрим другой вариант если база данных была создана пользователем и экспортирована утилитой pg_dump тогда дамп будет содержать только структуру базы данных и для импорта такого дампа необходимо создать чистую базу данных и уже туда импортировать этот дамп, в этой статье мы рассмотрим все способы импорта, но для начала разберем экспорт баз данных. 1) перейдем к пользователю postgres(или любому другому созданному в среде postgresql) sudo su postgres 2) далее могут быть различия так как
Оглавление

Данная статья описывает процесс экспорта и импорта базы данных postgresql на Linux но эти же команды можно адаптировать и к Windows.

Немного теории, для начала разберем какие дампы базы данных бывают и так если дамп был скачан допустим с официального сайта PostgreSQL (демонстрационная база данных) или из другого популярного источника то такой дамп содержит все необходимое для импорта(то есть не только структуру таблиц и данные к ним но и саму базу данных которую можно спокойно импортировать). А теперь рассмотрим другой вариант если база данных была создана пользователем и экспортирована утилитой pg_dump тогда дамп будет содержать только структуру базы данных и для импорта такого дампа необходимо создать чистую базу данных и уже туда импортировать этот дамп, в этой статье мы рассмотрим все способы импорта, но для начала разберем экспорт баз данных.

Экспорт базы данных

1) перейдем к пользователю postgres(или любому другому созданному в среде postgresql)

sudo su postgres

2) далее могут быть различия так как чтобы не было необходимости искать директорию где пользователь postgres имеет право на запись я записывал дамп в домашнюю директорию( у меня это /var/lib/postgresql ) пользователя postgres, для этого перейдем туда

cd ~

3) Теперь можем выгрузить базу данных demo в дамп back.sql

pg_dump -U postgres -d demo > back.sql

На этом экспорт завершен и дамп можно переносить куда угодно

Теперь рассмотрим импорт базы данных из дампа скачанного из интернета(содержит все необходимое)

Импорт базы данных(дамп из интернета)

1)Для удобства я создал директорию Base в /usr, так мне показалось удобно потому что и пользователь linux и пользователь postgres имеют право на чтение в этой директории.

sudo mkdir /usr/Base

2)В директорию Base перенесем дамп

3)Переходим в директорию /usr/Base

cd /usr/Base

4)перейдем к пользователю postgres

sudo su postgres

5) импортируем дамп demo.sql базы данных

psql -U postgres -f demo.sql

6)После этого можно подключиться к базе данных demo( имя посмотрел в режиме psql командой \l )

psql -U postgres -d demo

*7)Бывает что в этом случае импортируются только структура таблиц, а данные нет чтобы это исправить выгрузим данные с дампа

\i demo.sql

Теперь рассмотрим импорт базы данных из дампа созданного пользователем

Импорт базы данных(дамп пользователя)

1)Первым шагом перейдем к пользователю postgres

sudo su postgres

2)войдем в оболочку PostgreSQL

psql -U postgres

3)создадим базу данных куда будем импортировать дамп

CREATE DATABASE NewBase;

4)выходим из оболочки PostgreSQL

\q

5)переходим в папку где лежит sql скрипт например /usr/Base

6)сделаем импорт базы данных

psql -U postgres newbase < back.sql

В названии базы данных используются именно строчные буквы

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

Еще раз повторю что даже при том что все команды представлены для ОС Linux довольно не сложно адаптировать эти же команды к ОС Windows. Все действия выполнялись на Debian но разницы в дистрибутивах в работе с PostgreSQL не будет.