2011-03-08 20 views

cevap

9

COPY'un biraz değiştirilmiş sürümü benim için daha iyi çalıştı, burada CSV biçimini belirtiyorum. Bu biçim, metinde ters eğik çizgi karakterleri üzerinde herhangi bir karışıklık olmadan davranır. Varsayılan biçim biraz garip TEXT'dur.

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

'psql' kullanıyorsanız ve dosya * sunucuya erişilemeyen bir konumda * (ancak sadece istemciye), \\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\} ile \\\\\\\\\\\\\\\ \\\\\\\\\\\\\\\\\} CSV dosyasının ilk satırını atlamak isteyenler için – Wildcard

+0

, "COPY myTable FROM"/path/to/file/on/server 'gibi (HEADER) FORMAT CSV, DELIMITER (' | '), HEADER gibi HEADER seçeneğini kullanın. ; ' – CodePlumber

11

Let veri aşağıdaki sorgu işi yapar, sonra veritabanı tablosu myTable bunları almak istediğiniz dosyanın values.txt içinde olup olmadığını ve dikkate

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

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

+2

gibi insan biraz yapılandırma dosyası yazmak gerekiyor csv dosyasını, yüklemek için. Lütfen cevabınızı "COPY myTable FROM 'value.txt' (DELIMITER ('|')) ile güncelleştirebilir misiniz?' – daemon12

2

yukarıda belirtilen COPY komutu kullanır ve CSV veri yüklemek hangi Pgloader vardır (ve MySQL SQLite ve dBase). Ayrıca, verileri okumak ve kopyalamak için ayrı thread'lar kullanıyor, bu yüzden oldukça hızlıdır (ilginç bir şekilde, Python'dan Common Lisp'e yazılmıştır ve 20x30x hız kazanmıştır, bkz. blog post).

Bu dosya adı/filepath etrafında tırnak ihtiyacı

LOAD CSV 
    FROM 'path/to/file.csv' (x, y, a, b, c, d) 
    INTO postgresql:///pgloader?csv (a, b, d, c) 
    … 
İlgili konular