python - 将 CSV 导入 BigQuery 中的表时无法添加字段

标签 python python-3.x csv google-bigquery

我有一个 python 脚本,它执行 gbq 作业以将 csv 文件 f 加载到 BigQuery 中的表中。我尝试以 csv 格式上传数据并收到以下错误:

 400 Invalid schema update. Cannot add fields (field: string_field_8)

这是我的 csv:

    id,first_name,username,last_name,chat_username,chat_id,forward_date,message_text
    231125223|Just|koso|swissborg_bounty|-1001368946079|1517903147|tes
  481895079|Emerson|EmersonEmory|swissborg_bounty|-1001368946079|1517904387|pictu
    316560356|Ken Sam|ICOnomix|swissborg_bounty|-1001368946079|1517904515|Today 

这是我的代码:

from google.cloud.bigquery import Client
import os
os.environ['GOOGLE_APPLICATION_CREDENTIALS'] = '***.json'
os.environ['GOOGLE_CLOUD_DISABLE_GRPC'] = 'True'

from google.cloud import bigquery
dataset_name = 'test_temporary_dataset'
table_name='table_telega'
bigquery_client = bigquery.Client()
dataset = bigquery_client.dataset(dataset_name)
table = dataset.table(table_name)
job_config = bigquery.LoadJobConfig()
job_config.source_format = 'text/csv'
job_config.skip_leading_rows = 1
job_config.autodetect = True
job_config.fieldDelimiter='|'
job_config.allow_jagged_rows=True
job_config.ignoreUnknownValues=True
job_config.allow_quoted_newlines=True
with open('**.csv', 'rb') as source_file:
    #job = table.upload_from_file(source_file, source_format='text/csv')
    job=bigquery_client.load_table_from_file(source_file, table, job_config=job_config)

job.result()
print(job.result())

如何解决?我应该改变什么?

最佳答案

只需在代码中添加此行

job_config._properties['load']['schemaUpdateOptions'] = ['ALLOW_FIELD_ADDITION']

这将允许将列添加到现有架构中。

关于python - 将 CSV 导入 BigQuery 中的表时无法添加字段,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48662949/

相关文章:

python - 根据两列组合的匹配将列从一个数据帧复制到另一数据帧

python - 从 CSV 文件中的行计算数字

python - 使用超过 1 列对 Excel 数据进行排序

python - 从包含在 Excel 单元格中的 CSV 导入的文本

python - 将列表转换为单独的数据框

python - 如何使用 Python 解析和修改 .odg 文件?

python - GAE : How long to wait for eventual consistency?

python - 无法让角色改变颜色

python-3.x - Pandas 移位日期时间索引运行时间太长

python - 可以告诉 Sphinx "automodule"在成员之间自动插入分节符吗?