通过pgadmin导入pgsql文件

时间:2014-12-15 02:39:52

标签: sql postgresql pgadmin

我在MySQL上工作,但我的一个客户端给了我一个使用postgreSql的项目。他给了我项目文件和扩展名为' .pgsql'。

的db文件

我安装了pgadmin并创建了一个测试数据库,但不知道如何导入pgsql文件。我尝试在脚本编辑器中复制粘贴查询,直到表格一切正常,但在数据查询时,它抛出错误。

数据格式也很奇怪,不知道它的查询格式是否正确。

这是pgsql文件的一瞥:

--
-- PostgreSQL database dump
--

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

SET search_path = public, pg_catalog;

SET default_tablespace = '';

SET default_with_oids = false;

--
-- Name: kjh; Type: TABLE; Schema: public; Owner: design; Tablespace: 
--

CREATE TABLE kjh (
mknh integer NOT NULL,
jkh integer NOT NULL
);


ALTER TABLE public.kjh OWNER TO design;

--
-- Name: TABLE kjh; Type: COMMENT; Schema: public; Owner: design
--

//..And so on

pgsql文件中的这些行抛出错误:

--
-- Data for Name: kjh; Type: TABLE DATA; Schema: public; Owner: design
--

COPY kjh (mknh, jkh) FROM stdin;
1   1
\.


--
-- Data for Name: w_ads; Type: TABLE DATA; Schema: public; Owner: design
--

COPY w_ads (id, link, city, type, name, enabled, "time", hits, isimg) FROM stdin;
44  #   -1  0   1   t   1   20  1
\.

有什么建议吗?

1 个答案:

答案 0 :(得分:1)

你可能遇到分隔符问题,尝试这样的事情:

COPY kjh (mknh, jkh) FROM stdin WITH DELIMITER ' ';
1 1
\.

这应该执行得很好。

另外,请注意,您的pgsql文件在值之间具有不一致的空格计数,因此您可能必须准备此文件使用单个分隔符替换值中的多个空格(具有单个空格分隔符的两个空格将导致错误,因为postgres将假设你提供空列值。)

我建议你选择另一个分隔符而不是空格,例如;^

不确定COPY ... FROM stdin是否可以从pgadmin运行(好吧,它应该),但如果失败,请尝试使用psql命令从CLI运行此查询。

有关分隔符和复制语法的详细信息,请参阅docs