1

我嘗試使用gcloud python library上傳幾行數據,但沒有成功。下面是從latest documentation使用gcloud python上傳空數據到Bigquery

client = bigquery.Client() 
dataset = client.dataset('test') 
table = dataset.table("test_table") 
rows = [("foo", "bar"), ("foo2", "bar2")] 
result = table.insert_data(rows) 

採取的示例代碼。如果我查詢最新上傳我得到:

[(None, None), (None, None)] 

所以我加空字段。在文檔中說上傳的行應該是「元組列表」,但這似乎不起作用。我的模式有兩個字符串字段。 Unicode字段不起作用,而且我也沒有得到任何錯誤結果,這使得難以調試。任何暗示我做錯了什麼?

回答

1

顯式聲明表中的模式將有助於解決此問題。即,而不是使用table = dataset.table('test_table'),你應該使用下列內容:

left = SchemaField('left', 'STRING', 'REQUIRED') right = SchemaField('right', 'STRING', 'REQUIRED') table = dataset.table('test_table', schema=[left, right])

我在Github上開了這方面的問題。如果感興趣,你可以read more here

+0

非常感謝。我結束了使用GoogleApi庫(https://cloud.google.com/bigquery/docs/reference/v2/tabledata/insertAll),因爲我已經有一個Python字典,它是沒有意義的,我把它轉換爲組。坦率地說,我無法按照gcloud庫背後的方法單獨處理集合和模式。使用結合兩者的dic更容易。不過謝謝你的解決方案。 – crisscross

+0

對於您使用「從google.cloud.bigquery.schema導入SchemaField」的導入語句,我們收到錯誤「No module named bigquery.cloud.schema」。這個圖書館是否存在或甚至工作了? – Praxiteles