簡體   English   中英

在PostgreSQL中使用分隔符列表導入CSV數據

[英]Import CSV data with delimiter tabulation in PostgreSQL

我有一個csv文件,其數據類似於“ 44444 521 hello”。 這里的景象是“ Tabulations”。

我想在名為“ TEST1”的表中導入csv數據,所以我這樣做了:

\copy TEST(attribut1,attribut2,attribut3) FROM '/mnt/c/Users/user1/Desktop/data/test1.csv' WITH DELIMITER E'\t' CSV HEADER;

attribut1 =整數。 attribut2 =整數。 attribut3 = varchar(20)。

它說:

錯誤:整數的無效輸入語法:“ 44444 521 hello”上下文:COPY test1,第2行,列attribut1:“ 4444444 521 hello”

謝謝你的時間。

編輯

這是十六進制編輯器中文件的屏幕截圖: 在此處輸入圖片說明

出現問題是因為您指定了CSV,從而激活了postgres的csv導入規則。 您的文件不會被制表符分隔; 它具有"在開始和每一行的結束引號這在CSV模式表示‘數據開始’/”數據的”結束,所以每一行視為單個字段,翼片內被視為數據,而不是定界符

要么以文本模式導入它(不指定CSV),要么以CSV模式導入它,但是指定一個不同的引號char(文件中不存在的char,1)以停止"被當作​​引號,而2),所以不能將其他字符視為引號)

無論哪種情況,您都必須刪除引號" chars out of post process-我認為您無法在復制數據時即時處理數據,因此必須首先將其加載到臨時表中,(所有varchar),然后去除引號並將其加載到您的真實表中( REPLACE(data, '"', '')::int

或者,你可以文本編輯器文件並刪除"從它字符,你給它之前的Postgres

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM