Импорт текстового массива CSV в PostgreSQL 9.2

У меня есть данные, что-то вроде этого:

Akhoond,1,Akhoond,"{""Ахунд"", ""Akhwan""}",0

импорт pgAdmin отклоняет это. В каком формате должен быть текст[] в CSV?

Я также попытался это:

Akhoond, 1, Akhoond, " {Akhund, Akhwan}", 0

Вот таблица create:

CREATE TABLE private."Titles"
(
  "Abbrev" text NOT NULL,
  "LangID" smallint NOT NULL REFERENCES private."Languages" ("LangID"),
  "Full" text NOT NULL,
  "Alt" text[],
  "Affix" bit
)
WITH (
  OIDS=FALSE
);

ALTER TABLE private."Titles" ADD PRIMARY KEY ("Abbrev", "LangID");

CREATE INDEX ix_titles_alt ON private."Titles" USING GIN ("Alt");

ALTER TABLE private."Titles"
  OWNER TO postgres;

1 ответов


лучший способ выяснить это-создать таблицу с нужными значениями и COPY ... TO STDOUT посмотреть:

craig=> CREATE TABLE copyarray(a text, b integer, c text[], d integer);
CREATE TABLE
craig=> insert into copyarray(a,b,c,d) values ('Akhoond',1,ARRAY['Akhund','Akhwan'],0);
INSERT 0 1
craig=> insert into copyarray(a,b,c,d) values ('Akhoond',1,ARRAY['blah with spaces','blah,with,commas''and"quotes'],0);
INSERT 0 1
craig=> \copy copyarray TO stdout WITH (FORMAT CSV)
Akhoond,1,"{Akhund,Akhwan}",0
Akhoond,1,"{""blah with spaces"",""blah,with,commas'and\""quotes""}",0

похоже "{Akhund,Akhwan}" - это хорошо. Обратите внимание на второй пример, который я добавил, показывающий, как обрабатывать запятые, кавычки в тексте массива.

это работает с psql ; Если не работа с PgAdmin-III тогда я бы предложил использовать psql и \copy.