2012-09-14 17 views
7

Aşağıdaki örnekte, son satır yüklenmez. Bir hata alıyorum:Alıntılar ve alan ayırıcı arasındaki veriler

Data between close double quote (") and field separator: 

Bu boru sembolü arasındaki tüm veriler tek bir alan olarak ele alınmalıdır çünkü bir hata gibi görünüyor.

Şema: biri: dize, iki: string, üç: dize, dört: string

yükle dosyası: Birinci ve ikinci satır yukarıda işlenir

This | is | test only | to check quotes 
second | line | "with quotes" | no text 
third line | with | "start quote" and | a word after quotes 

. Ama üçüncü değil.


Güncelleme:

bazı lütfen açıklayabilir niçin üçüncü satırda haricinde aşağıdaki çalışma ?

This | is | test only | to check quotes 
second | line | "with quotes" | no text 
third line | with | "start quote" and | a word after quotes 
forth line | enclosed | {"GPRS","MCC_DETECTED":false,"MNC_DETECTED":false} | how does this work? 
fifth line | with | {"start quote"} and | a word after quotes 

Bunun için biraz açıklayıcı bir açıklama olabilir. Son kullanıcı bakış açısından bu saçmadır.

+1

Sadece Güncellemenizi çalıştıysanız ve verdi örneği aslında çalışmıyor mu Çoğu CSV ayrıştırma uygulaması gibi, BigQuery varsayılan olarak çift tırnak işaretleri (") alanı kapsayan bir karakter olarak kabul eder. 3. satır düzgün bir şekilde kaçmadı (aşağıya bakın) ve yutmaya bir hata atılacak. Seçenekleriniz şunlardır: 1. Yutma isteklerinizdeki "configuration.admin.quote" parametresini, çift tırnak işareti dışında başka bir şeye (verilerinizde görünmeyen bir karaktere) değiştirin. 2. Verilerinizi aşağıda önerildiği şekilde çıkarınız ... örneğin, Python'un csv sınıfı bunu otomatik olarak yapar. –

+0

NULL için "Configuration.load.quote" gibi şeyler yapabilmeyi düşünerek haklı olabileceği düşünülürken, büyük miktarlarda CSV verileriyle çalışırken sınırlayıcılar ve alan çevreleyen karakterlerle çok açık olmanın önemli olduğunu düşünüyorum.Temel verilerdeki hataları yakalamaya ve aldığınız verilerin geçerli olduğundan emin olmanıza yardımcı olur. –

cevap

7

CSV RFC4180 page'dan: "Alanları kapamak için çift tırnak kullanılırsa, bir alanın içinde görünen bir çift tırnak işareti, bir başka çift tırnak işareti ile öncelen silinmelidir."

Muhtemelen bunu yapmak istiyorum: Bizim CSV giriş biçimi here hakkında

This | is | test only | to check quotes 
second | line | "with quotes" | no text 
third line | with | " ""start quote"" and " | a word after quotes 

Daha.

+4

Yükleme iş karakterindeki 'teklif' alanını, kullanmayacağınız bir şeye ayarlayarak teklif karakterini değiştirebilirsiniz. –

+1

Yükleme işinde teklif alanı nasıl ayarlanır? Eğer bq load --quote '^' kullanırsam ... o zaman hata ayıklama hatası alırım Hatalı Bayraklar: Bilinmeyen komut satırı bayrağı 'quote' # ~/.bigqueryrc 'de teklif parametresi eklerseniz hata alıyorum: Bilinmeyen bayrak yapılandırması .load.quote bigqueryrc dosyasında bulundu – shantanuo

+0

Sanırım "alıntı" parametresi bir sonraki sürümde bq komut satırı aracına eklenecektir. Bu konu benim için çok önemli, yeni sürümü bekleyeceğim! – shantanuo

1

Verileri yüklerken diğer bayrakları da kullanabilirsiniz. kayıtları çevrelemek için kullanmak Alıntı karakteri: Aşağıdaki bayraklar

bq load -F , --source_format CSV --skip_leading_rows 1 --max_bad_records 1 --format csv -E UTF-8 yourdatset gs://datalocation. 
0

-- Alıntı mükemmel çalıştı.

bq load 
--source_format CSV --quote "" 
--field_delimiter \t 
--max_bad_records 10 
-E UTF-8 
destination table 
Source files 
İlgili konular