我在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
\.
有什么建议吗?
答案 0 :(得分:1)
你可能遇到分隔符问题,尝试这样的事情:
COPY kjh (mknh, jkh) FROM stdin WITH DELIMITER ' ';
1 1
\.
这应该执行得很好。
另外,请注意,您的pgsql文件在值之间具有不一致的空格计数,因此您可能必须准备此文件使用单个分隔符替换值中的多个空格(具有单个空格分隔符的两个空格将导致错误,因为postgres将假设你提供空列值。)
我建议你选择另一个分隔符而不是空格,例如;
或^
。
不确定COPY ... FROM stdin
是否可以从pgadmin运行(好吧,它应该),但如果失败,请尝试使用psql
命令从CLI运行此查询。
有关分隔符和复制语法的详细信息,请参阅docs。