Восстановить или преобразовать file.dump в pgAdmin

У меня проблема с файлом дампа, который клиент дает мне, чтобы создать файл для подключения к базе данных postgres в php, и я делаю это первым

  1. Переименуйте этот файл ssdf_master.dump в ssdf_master.sql, чтобы он выполнялся в pgAdmin или Navicat, но не работает.
  2. Запустите этот pg_restore ssdf_master.dump и запросите пароль и введите пароль, который я сохраняю в pgAdmin, но не сохраняю.

Мой ssdf_master.dump имеет такие символы, как \N и . и при запуске этого файла в navicat отображается эта ошибка:

[Err] ERROR:  error de sintaxis en o cerca de «01»
LINE 784: 01 Aguascalientes AGS 00000 99999 \N

Извлечение файла

--
-- PostgreSQL database dump
--

SET statement_timeout = 0;
SET client_encoding = 'LATIN1';
SET standard_conforming_strings = off;
SET check_function_bodies = false;
SET client_min_messages = warning;
SET escape_string_warning = off;

--
-- Name: plpgsql; Type: PROCEDURAL LANGUAGE; Schema: -; Owner: postgres
--

CREATE PROCEDURAL LANGUAGE plpgsql;


ALTER PROCEDURAL LANGUAGE plpgsql OWNER TO postgres;

SET search_path = public, pg_catalog;

SET default_tablespace = '';

SET default_with_oids = false;

--
-- Name: scg; Type: TABLE; Schema: public; Owner: postgres; Tablespace: 
--

CREATE TABLE scg (
    base_datos character varying(8),
    ip character varying(15),
    tipo character(1),
    owner character varying(8),
    own_passwd character varying(8)
);


ALTER TABLE public.scg OWNER TO postgres;

--
-- Data for Name: scg; Type: TABLE DATA; Schema: public; Owner: postgres
--

COPY scg (base_datos, ip, tipo, owner, own_passwd) FROM stdin;
SCGDGCA 10.18.20.150    E   postgres    postgres
SCGSJ   10.18.20.150    E   postgres    postgres
SCGDPRE 10.18.20.150    E   postgres    postgres
SCGDSSA 10.18.20.150    E   postgres    postgres
SCGDAFI 10.18.20.150    E   postgres    postgres
SCGSDA  10.18.20.150    E   postgres    postgres
SCGDPRED    10.18.20.150    E   postgres    postgres
\.

Примечание. Раньше я создавал базу данных postgres с пользователем postgres без пароля.

Надеюсь объяснил!


person SoldierCorp    schedule 26.03.2013    source источник
comment
serverfault.com тоже может быть хорошим местом, чтобы спросить   -  person poseid    schedule 26.03.2013
comment
Спасибо, я тоже туда положил!   -  person SoldierCorp    schedule 26.03.2013
comment
Опубликовано здесь: serverfault.com/q/491364/102814, но будьте любезны, SoldierCorp как бы приказали.   -  person Craig Ringer    schedule 26.03.2013
comment
1. Вам нужно просмотреть содержимое файла, скажем, первые 50 строк, чтобы узнать, что внутри. Добавьте их к вопросу, если это не имеет для вас смысла. 2. Используйте командную строку psql вместо графического интерфейса, это проще для такого рода задач.   -  person Daniel Vérité    schedule 26.03.2013
comment
@DanielVérité Я опубликовал выдержку из файла ... и что касается использования psql, я использовал, но не вставлял таблицу и данные.   -  person SoldierCorp    schedule 26.03.2013


Ответы (1)


Судя по выдержке из файла, это дамп в текстовом формате.

Его не следует передавать в pg_restore, потому что:

pg_restore — это утилита для восстановления базы данных PostgreSQL из архива, созданного pg_dump(1) в одном из форматов, отличных от обычного текста.

Скорее, его следует передавать непосредственно в psql при подключении к уже созданной базе данных, предположительно пустой. Объекты, кажется, принадлежат postgres, так что это должно делать:

psql -U postgres -d yourdbname < dumpfile
person Daniel Vérité    schedule 26.03.2013
comment
Извините за опоздание... Я думаю, работает, но я проверил базу данных, и таблицы были вставлены без ошибок, я не понимаю! и когда запустите вашу строку psql -U.... отобразите что-то вроде этого: Ошибка: La relacón scg ya existse - person SoldierCorp; 28.03.2013
comment
Ошибки, связанные с уже существующими объектами, возникнут при восстановлении в непустую базу данных. Непустая база данных может произойти из-за предыдущих неудачных восстановлений на полпути. Вы можете удалить и воссоздать базу данных перед импортом в нее. - person Daniel Vérité; 28.03.2013
comment
В Windows сложно настроить, в Linux это легко, и ваша линия работает, спасибо. - person SoldierCorp; 28.03.2013