2012-08-02 6 views
21

Çok büyük bir .txt dosyası var ~ 9gb ve bu txt dosyasını postgres'e yüklemek istiyorum. İlk satır başlıktır, ardından tüm veriler gelir. Verileri doğrudan KOPYALAYI yayınlarsam, başlık, veri türünün postgre tablosumla eşleşmemesiyle ilgili bir hataya neden olur, bu yüzden bir şekilde kaldırmam gerekecek.Nasıl Yapılır Postgres Kopyala büyük txt dosyasının ilk satırını yoksayar

Örnek veriler: ProjectId, MailId, MailCodeId, prospectid, listid, datemailed miktar, bağışlanan, fermuar, zip4, VectorMajor, VectorMinor, PackageID, faz VeritabanıKimliği, AMOUNT2

15,53568419,89734,219906,15,2011-05-11 00:00:00,0,0,90720,2915,NonProfit,POLICY,230,3,1,0 

16,84141863,87936,164657,243,2011-03-10 00:00:00,0,0,48362,2523,NonProfit,POLICY,1507,5,1,0 

16,81442028,86632,15181625,243,2011-01-19 00:00:00,0,0,11501,2115,NonProfit,POLICY,1508,2,1,0 

da KOPYA işlevi postgres'in ilk satırı göz ardı edebilirsiniz "başlığı" ayarı vardır, sadece cSV dosyaları için çalışır:

:

copy training from 'C:/testCSV.csv' DELIMITER ',' csv header; 

benim txt dosyasına yukarıdaki kodu çalıştırmayı deneyin bu hata alır Ben "alıntı" ve "kaçış" ekleyerek denedim

copy training from 'C:/testTXTFile.txt' DELIMITER ',' csv header 
ERROR: unquoted newline found in data 
HINT: Use quoted CSV field to represent newline. 

niteliklerini ancak komut sadece txt dosyası için çalışmıyor gibi görünüyor olmaz: Alternatif

copy training from 'C:/testTXTFile.txt' DELIMITER ',' csv header quote as E'"' escape as E'\\N'; 
ERROR: COPY escape must be a single one-byte character 

, ben java çalıştırma hakkında düşünce veya ayrı stagging oluşturmak İlk satırı kaldırmak için masa ... ama bu çözümler geniş ve zaman alıcı. Sadece başlıkların ilk sırasını kaldırmak için 9gb veri yüklemem gerekecek ... bir txt dosyasının ilk sırasını kolayca çıkarabilmem için başka çözümler var mı? Böylece verileri postgres veritabanına yükleyebilirim? CSV seçeneğiyle

+2

ilk satırı kaldırsa _header_ seçeneği harici yarar bunun için gereklidir. Bu, "verilerde bulunmayan yeni satır" a yol açarsa, bir soru ortaya çıkarır: Dosyanızın yapısı tam olarak nedir? [CSV] 'den (http://en.wikipedia.org/wiki/Comma-separated_values) nasıl farklıdır? –

cevap

38

Kullanım BAŞLIK seçeneği:

WITH CSV HEADER DELIMITER AS ',' 

HEADER Specifies that the file contains a header line with the names of each column in the file. On output, the first line contains the column names from the table, and on input, the first line is ignored. This option is allowed only when using CSV format.

+0

Üzgünüm, misatke, CSV üstbilgisi çalışıyor. Benim txt dosyasındaki veriler aslında csv dosyasından hatayı sonuçlandıran farklı bir biçime sahipti. – thiakx