Я пытаюсь использовать API-интерфейс Python bigquery для вставки данных в таблицы bigquery. Точнее команда:
errors = client.insert_rows(table, rows[i*BATCH_SIZE:])
Столбец gas_used в моей таблице имеет тип данных INTEGER и NULLABLE. Но я получаю следующую ошибку при вставке строк с нулевыми значениями в gas_used.
[{'index': 0, 'errors': [{u'debugInfo': u'', u'reason': u'invalid', u'message': u'Cannot convert value to integer (bad value):', u'location': u'gas_used'}]}]
Вот схема моей таблицы:
block_number,transaction_hash,type,trace_address,subtraces,transaction_position,from,to,value_wei,start_gas,input,gas_used,contract_address,output,error
и вот строка, которая вызывает ошибку:
[('5000001', '0x2cfd7194877466e6adb87222e5876c4babf8bd59de299698fdce7f0a9a232932', 'call', '[]', '0', '11', '0x77cb68e788aa79640b8a613431cdb10d83208d47', '0x4b3ee0ac445d954f8bca68f9538d54e9633890f6', '349950000000000', '0', '0x', '', '', '', 'Out of gas')]
Столбец gas_used - это четвертый последний столбец в схеме.
Эллиотт прав, значение ''
- это пустая строка, а не целое число. Вам нужно будет либо заменить его значением None
, либо конкретным 0 (нулем).
@WillianFuks Я хотел бы сохранить природу целого числа Null
и, следовательно, не могу использовать конкретное значение 0, но использование None
- хорошая идея. Я обновил ответ найденным мной решением.
Как упоминалось в Уильям Фукс, я должен указать Null Integer как None
или 0
. Я бы предпочел сохранить природу целого числа Null
, поэтому предпочел бы использовать `Nonè
Я прочитал сообщение это и теперь загружаю список словарей, удаляя ключи, которые равны нулю.
Значит, это соответствует значению
''
? Мне это не кажется действительным целым числом ...