将file.dump恢复或转换为pgAdmin

时间:2013-03-26 09:13:01

标签: postgresql dump pgadmin navicat

我有一个转储文件的问题,客户端让我创建一个文件来连接php中的postgres数据库,我先这样做

  1. 将此文件 ssdf_master.dump 重命名为 ssdf_master.sql ,以便在pgAdmin或Navicat中执行但不起作用。
  2. 运行此pg_restore ssdf_master.dump 并要求输入密码并输入我在pgAdmin中保存的密码,但不是。
  3. 我的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 没有密码。

    我希望我已经解释过了!

1 个答案:

答案 0 :(得分:0)

根据文件的摘录,这是一个纯文本格式的转储。

不应该将其传递给pg_restore,因为:

  

pg_restore是一个用于从中恢复PostgreSQL数据库的实用程序   由pg_dump(1)以非纯文本格式之一创建的存档

相反,它应该在连接到已创建的数据库时直接送到psql,大概是空的。这些对象似乎归postgres所有,所以这应该是:

psql -U postgres -d yourdbname < dumpfile