2017-06-30 6 views
0

GCSからBigqueryにファイルを読み込むためにPythonスクリプトを使用しています。カンマで区切られたファイルを読み込むときに動作します。これはデフォルトです。ただし、次のジョブプロパティを設定した後に、タブ区切りファイルをロードしようとしたとき:タブ区切りファイルをgcsからPythonスクリプトでBigqueryにロードするときにエラーが発生する

job.allowQuotedNewlines=True 
    job.fieldDelimiter='\t' 
    job.skipLeadingRows=1 
    job.maxBadRecords=9999999 

ジョブによって挿入されます。

"errors": [ 
    { 
    "reason": "invalid", 
    "message": "Too many errors encountered." 
    }, 
    { 
    "reason": "invalid", 
    "location": "gs://my-test/test-file", 
    "message": "CSV table references column position 1, but line starting at position:0 contains only 1 columns." 
:それは次のエラーを与える

job.begin() 

}

カンマ区切り文字を探していますか?スクリプトで設定されたプロパティのいずれも実際にAPIによって取得されたものではないようです。 私は何が欠けていますか?ここではvimの中に「設定リスト」の後に同じ2行がある

0265cd91-3126-4f54-a7e3-54be3ef2d8f9 357215cb-c073-4e67-bfdb-7085f8709015 398a9017-1157-4891-aacb-8108c5fb6378 6bb1f59a-81bb-49da-9974-193a23cb3bca test B test2 B 0 2017-03-21 18:48:32 2017-03-21 18:48:32 
02aa9715-e47b-4cd9-89f8-a091f7a6e81d 1186dfc3-3b2f-456a-be06-bf5f5a0f7c12 398a9017-1157-4891-aacb-8108c5fb6378 e1983ef2-d7a1-49ce-9fe2-a5cd439b8ca0 test A test2 A 0 2017-06-26 14:37:43 2017-06-26 14:37:43 

はここ2つの、私は負荷にしようとしているファイルからの行です。あなたが見ることができるようにセパレータが "^ I" です。ここで

0265cd91-3126-4f54-a7e3-54be3ef2d8f9^I357215cb-c073-4e67-bfdb-7085f8709015^I398a9017-1157-4891-aacb-8108c5fb6378^I6bb1f59a-81bb-49da-9974-193a23cb3bca^IRockMedium B^IRockMedium 
    02aa9715-e47b-4cd9-89f8-a091f7a6e81d^I1186dfc3-3b2f-456a-be06-bf5f5a0f7c12^I398a9017-1157-4891-aacb-8108c5fb6378^Ie1983ef2-d7a1-49ce-9fe2-a5cd439b8ca0^IStairModule A^IStairModu 

完全なコードです:

dest_dataset = "temp" 
    dest_table = "lineItems_copy" 
    destination = self.bq_client.dataset(dest_dataset).table(name=dest_table) 
    source_files = "gs://my-test/test-*" 
    job_id = "load_gcs_file_to_bq_" + str(uuid.uuid4()) 
    print ("job_id= ", job_id) 
    job = self.bq_client.load_table_from_storage(job_id, destination, source_files) 
    job_properties = {'createDisposition': 'CREATE_NEVER', 'sourceFormat': 'CSV', 'writeDisposition': 'WRITE_APPEND'} 

    #testing with tab-delimited: 
    job.allowQuotedNewlines=True 
    job.fieldDelimiter='\t' 
    job.skipLeadingRows=1 
    job.maxBadRecords=9999999 
    submit_async_load_job(self.bq_client, self.cloud_logger, job, job_id, job_properties) 

def submit_async_load_job(bq_client, logger, job, job_id, load_job_options): 
    for key, value in load_job_options.iteritems(): 
    print ("key value: " , key, " ", value) 
    set_property = 'job.' + key + '="'+value+'"' 
    print set_property 
    exec(set_property)    
    job.begin() 
    wait_for_job(logger, job, job_id) 
    return 

はあなたの助けに感謝。

+0

する必要がありますあなたは私たちを見ることができます私たちが分析するためのサンプルとしてあなたのファイルの1行だけ? –

+0

完全なコードを投稿できますか? –

+0

ではサンプルデータとコード全体が追加されました。あなたの助けに感謝。 – FZF

答えて

0

問題は、プロパティ名だった:このAPIでのロード・ジョブをsubmitingすると、プロパティは元のために、別々に綴られ.: job.fieldDelimiter =「\ t」は

job.field_delimiter='\t' 
関連する問題