2011-03-08 44 views

回答

9

的下面略爲修改的COPY版本對我來說效果更好,我指定了CSV格式。這種格式不用大驚小怪地處理文本中的反斜槓字符。默認格式是有點古怪TEXT

COPY myTable FROM '/path/to/file/on/server' (FORMAT CSV, DELIMITER('|')); 
+1

如果你正在使用'psql'並且文件位於* server *不可訪問的位置但僅限於客戶端),使用完全相同的命令,除了以'\ copy'開始。 – Wildcard 2017-04-21 05:51:01

+0

對於那些想要跳過CSV文件第一行的用戶,請使用HEADER選項,如在'COPY myTable FROM'/ path/to/file/on/server'(FORMAT CSV,DELIMITER('|'),HEADER) ;' – CodePlumber 2017-08-27 20:13:33

11

讓我們考慮你的數據在文件values.txt和要導入數據庫表myTable然後下面的查詢做工作

COPY myTable FROM 'value.txt' (DELIMITER('|')); 

https://www.postgresql.org/docs/current/static/sql-copy.html

+2

它需要周圍的文件名/文件路徑引號。你能否請更新你的答案'COPY myTable FROM'value.txt'(DELIMITER('|'));' – daemon12 2016-05-11 06:39:40

2

Pgloader使用上述COPY命令並且能夠從加載CSV數據(和MySQL,SQLite和dBase的)。它還使用單獨的線程來讀取和複製數據,所以速度非常快(有趣的是,它是從Python寫入Common Lisp並獲得了20至30倍的速度增益,請參閱blog post)。

要加載CSV文件一個需要寫一個小的配置文件,如

LOAD CSV 
    FROM 'path/to/file.csv' (x, y, a, b, c, d) 
    INTO postgresql:///pgloader?csv (a, b, d, c) 
    … 
相關問題