Postgresql
postgresql - 使用自定義類型導入 CSV 數據
我主要是數據庫的新手,並且正在建構一系列課程中學生成績的 postgres 數據庫。我的數據庫使用一種稱為“類”的類型,它由課程、學期(年和季度)和節號(1,2,3,…)組成,例如(‘Bio 101’, (17, ‘F’),1)。我正在嘗試將包含此類數據的 CSV 複製到表中,並收到一條錯誤消息,提示
ERROR: extra data after last expected column
. 我試過 pgAdmin III 導入嚮導、COPY 和 \copy,結果都一樣。但是,手動從文件中複製一行並導入它(使用適當的括號)可以正常工作。發生了什麼事,我能做什麼?這是表格和一些數據:
CREATE TABLE public."GradedItems" ( class class NOT NULL, category text NOT NULL, "number" smallint NOT NULL DEFAULT 1, topic text[], points integer, weight double precision, -- Weight of item within category CONSTRAINT primary_key PRIMARY KEY (class, category, number) ) 'class','category','number','points' ('LS 30A', (18, 'W'), 2),'Homework',1,60 ('LS 30A', (18, 'W'), 2),'Homework',2,36
發生的情況是列名稱數和數據中的列數不匹配。如果沒有關於如何生成 csv 以及如何導入的資訊,很難說,但是假設 csv 上的分隔符是逗號字元,這就是數據庫插入操作試圖做的事情:它讀取這個
'class','category','number','points'
並學習如何映射四列。然後,當它到達第二行時,它會用逗號分割數據,因此它將該行解釋為('LS 30A'||(18||'W')|| 2)||'Homework'||1||60
其中
||
表示值之間的中斷。它將命令解釋為:set class = ('LS 30A', category = (18, number = 'W', points = 2)
…然後它不知道如何處理其餘數據,因為它不適合。
我的建議是使用不同的分隔符。這將取決於如何生成 csv 你如何做到這一點。