我有一个转储文件的问题,客户端让我创建一个文件来连接php中的postgres数据库,我先这样做
我的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 没有密码。
我希望我已经解释过了!
答案 0 :(得分:0)
根据文件的摘录,这是一个纯文本格式的转储。
不应该将其传递给pg_restore,因为:
pg_restore是一个用于从中恢复PostgreSQL数据库的实用程序 由pg_dump(1)以非纯文本格式之一创建的存档
相反,它应该在连接到已创建的数据库时直接送到psql
,大概是空的。这些对象似乎归postgres
所有,所以这应该是:
psql -U postgres -d yourdbname < dumpfile