2012-09-14 13 views
7

नीचे दिए गए उदाहरण में, अंतिम पंक्ति अपलोड नहीं की गई है। मुझे एक त्रुटि मिलती है:उद्धरण और फ़ील्ड विभाजक के बीच डेटा

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

यह एक बग जैसा दिखता है क्योंकि पाइप प्रतीक के बीच के सभी डेटा को एक फ़ील्ड के रूप में माना जाना चाहिए।

स्कीमा: एक: स्ट्रिंग, दो: स्ट्रिंग, तीन: स्ट्रिंग, चार: स्ट्रिंग

फ़ाइल अपलोड करें:

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

पहली और दूसरी रेखा से ऊपर संसाधित किया जाता है। लेकिन तीसरा नहीं।


अद्यतन:

कुछ कृपया समझा क्यों करता है निम्नलिखित काम तीसरी लाइन को छोड़कर?

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 

इसमें कुछ फैंसी स्पष्टीकरण हो सकते हैं। अंत उपयोगकर्ता परिप्रेक्ष्य से यह बेतुका है।

+1

मैं सिर्फ अपने अद्यतन की कोशिश की, और उदाहरण आप दे दी है वास्तव में काम नहीं करता है अधिकांश सीएसवी पार्सिंग अनुप्रयोगों की तरह, बिगक्वायर डिफ़ॉल्ट रूप से डबल कोट्स (") को फ़ील्ड संलग्न करने वाले क्षेत्र के रूप में मानता है। तीसरी पंक्ति ठीक से बच नहीं है (नीचे मेरा जवाब देखें) और इंजेक्शन एक त्रुटि फेंक देगा। आपके विकल्प हैं: 1. डबल-कोट (एक वर्ण जो आपके डेटा में प्रकट नहीं होता है) के अलावा किसी अन्य चीज़ के लिए आपके इंजेक्शन अनुरोधों में "config.load.quote" पैरामीटर बदलें। 2. नीचे दिए गए अनुसार अपने डेटा से बचें ... उदाहरण के लिए, पायथन की सीएसवी कक्षा स्वचालित रूप से यह करती है। –

+0

हालांकि, "config.load.quote" को सेट करने जैसी चीजों को करने में सक्षम होने पर योग्यता हो सकती है, मुझे लगता है कि बड़ी मात्रा में सीएसवी डेटा के साथ काम करते समय डिलीमीटर और फ़ील्ड संलग्न करने वाले पात्रों के साथ बहुत स्पष्ट होना महत्वपूर्ण है।यह अंतर्निहित डेटा में त्रुटियों को पकड़ने में सहायता करता है, और यह सुनिश्चित करने के लिए कि आप जिस डेटा को ले रहे हैं वह मान्य है। –

उत्तर

7

CSV RFC4180 page से: "यदि फ़ील्ड को घेरने के लिए डबल-कोट्स का उपयोग किया जाता है, तो एक फ़ील्ड के अंदर दिखाई देने वाला डबल-कोट एक और डबल कोट के साथ पहले से बच जाना चाहिए।"

आप शायद ऐसा करना चाहते हैं:

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

हमारे CSV इनपुट प्रारूप here के बारे में अधिक।

+4

नोट करें कि आप लोड जॉब कॉन्फ़िगरेशन में 'उद्धरण' फ़ील्ड सेट करके उद्धरण चरित्र को बदल सकते हैं जिसे आप कभी भी उपयोग नहीं करेंगे। –

+1

भार नौकरी में उद्धरण फ़ील्ड कैसे सेट करें? अगर मैं bq load --quote '^' का उपयोग करता हूं ... तो मुझे एक त्रुटि मिलती है FATAL Flags पार्सिंग त्रुटि: अज्ञात कमांड लाइन ध्वज 'उद्धरण' # यदि मैं ~/.bigqueryrc में उद्धरण पैरामीटर जोड़ता हूं तो मुझे त्रुटि मिलती है: अज्ञात ध्वज कॉन्फ़िगरेशन bigqueryrc फ़ाइल में पाया गया .load.quote – shantanuo

+0

मुझे लगता है कि "उद्धरण" पैरामीटर अगले रिलीज में bq कमांड लाइन उपकरण में जोड़ा जाएगा। यह मुद्दा मेरे लिए इतना महत्वपूर्ण है कि मैं नए संस्करण की प्रतीक्षा करूंगा! – shantanuo

1

डेटा अपलोड करते समय आप अन्य झंडे का भी उपयोग कर सकते हैं। रिकॉर्ड संलग्न करने का उपयोग करने के उद्धरण चरित्र: मैं निम्नलिखित झंडे

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

-- बोली पूरी तरह से काम किया।

bq load 
--source_format CSV --quote "" 
--field_delimiter \t 
--max_bad_records 10 
-E UTF-8 
destination table 
Source files 
संबंधित मुद्दे