1

Я пытаюсь загрузить несколько строк данных, используя gcloud python library и не получится. Вот пример кода, взятый из latest documentationЗагрузка пустых данных в Bigquery с использованием gcloud python

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

Мы получили сообщение об ошибке «Без модуля с именем bigquery.cloud.schema» для оператора импорта, который вы используете «из google.cloud.bigquery.schema import SchemaField». Эта библиотека существует или даже работает? – Praxiteles

Смежные вопросы