2013-04-16 9 views
5

że coś danych tak:importu CSV Tablica tekstu do PostgreSQL 9,2

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

import pgAdmin to odrzuca. W jakim formacie tekst [] musi znajdować się w pliku CSV?

Próbowałem też tak:

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

Oto tabela utworzyć:

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; 
+0

wiadomość (s) Błąd? –

+0

Rzuca "dodatkowe dane po ostatniej oczekiwanej kolumnie". Sprawdziłem i jest 5 kolumn w DB i 5 w CSV. – IamIC

+1

Co się stanie, jeśli ręcznie utworzymy obojętną tabelę z wierszem lub dwoma żądanymi danymi, a następnie wyeksportujemy ją z PgAdmin-III? Jaki format generuje i czy następnie importuje go poprawnie? Jeśli eksportuje, ale nie importuje, to znalazłeś błąd. Szczerze mówiąc uważam, że jest to błąd, jeśli nie używa tej samej składni co standardowe polecenie 'COPY'. –

Odpowiedz

8

Najlepszym sposób, aby dowiedzieć się, aby utworzyć tabelę z pożądanymi wartościami i COPY ... TO STDOUT zobaczyć:

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 

Tak wygląda "{Akhund,Akhwan}" jest w porządku. Zwróć uwagę na drugi przykład dodany, pokazujący jak obsługiwać przecinki, cytuje spacje w tekście tablicy.

działa z polecenia psql \copy; jeśli nie pracę z pgAdmin-III następnie Sugerowałbym użyciu psql i \copy.

+0

Działa dla PgAdmin III. – pisaruk

Powiązane problemy