PostgreSQL 9.3 Импорт дампов в таблицу psql разочарование новичка
Я работаю на Windows Server 2008 с дампом базы данных musicbrainz. Я без проблем распаковал дамп, и есть около 60 файлов без расширений, чьи имена отражают таблицы базы данных.
Мне удалось заставить работать скрипт sql createtables, который я нашел на github, и у меня есть схема базы данных с пустыми таблицами, которые отражают файлы, которые я распаковал.
Проблема в том, что я нахожусь в интерфейсе командной строки psql, и я выяснил, как выполнить команду импорта большого объекта согласно
\lo_import 'путь / имя файла'
Кажется, это работает, потому что файлы очень большие, и в тот момент, когда я запускаю процессор, индикатор начинает мигать, как сумасшедший. Проблема вернулась в Postgres после того, как я обновил свою базу данных, таблицы все еще пусты. Я понятия не имею, где эти данные, если где-нибудь.
Я программист Windows (.NET/SQL/JQuery), поэтому мне нужен кто-то, кто может объяснить, что происходит с этой точки зрения. Боюсь, объяснение того, что работает в unix, linux или в чем-то другом, кроме windows, не поможет.
2 ответа
Рекомендуемый способ импорта наших дампов данных - следовать инструкциям в файле INSTALL, входящем в комплект сервера musicbrainz:
https://github.com/metabrainz/musicbrainz-server/blob/master/INSTALL
Упомянутые вами "60 файлов без расширения" являются простыми файлами, разделенными табуляцией, вы можете импортировать их вручную с помощью команды postgresql COPY FROM, но, опять же, это не рекомендуется.
Чтобы получить доступ к базе данных musicbrainz, может быть проще получить нашу виртуальную машину, см. http://wiki.musicbrainz.org/MusicBrainz_Server/Setup
Вы можете просто импортировать данные дампа sql в базу данных postgres.
если вы уже создали БД, вам не нужно выполнять 1-й шаг: -
ШАГ=1
откройте терминал, затем выполните следующие команды для создания базы данных и пользователя postgres:
sudo -u postgres psql
postgres=# create database mydb;
postgres=# create user myuser with encrypted password 'mypass';
postgres=# grant all privileges on database mydb to myuser;
ШАГ=2
\c используется для выбора вашей базы данных.
postgres=# \c yourdatabasename
\i используется для импорта данных дампа в базу данных.
yourdatabasename=# \i path_of_your_dump_file
Например:-
yourdatabasename=# \i /home/developer/projects/django_projects/db_dump.sql
Если вы столкнулись с ошибкой этого типа при импорте данных:
ERROR: role "yourusername" does not exist
поэтому вы можете сделать суперпользователя своим «db_user/yourusername», используя эту команду: -
postgres=# ALTER USER fusion WITH SUPERUSER;
ALTER ROLE