使用BQ加载加载ORC文件时保留BQ表架构

时间:2019-06-25 10:56:42

标签: google-bigquery

在使用“ bq Load”命令将ORC文件加载到现有的BQ表时,观察到一旦加载数据,表架构(表的列名)也会发生变化。

要求是将GCS中的ORC文件加载到BigQuery中的登台表中。我试图使用“ bq load”命令实现此步骤,但它更改了表的现有架构。

示例代码:

bq load --replace --source_format = ORC some_dateset.some_table_staging gs:// some_bucket / some_table / *

即使将ORC文件加载到表中,我也希望在BigQuery表中保留实际的列名。但是到目前为止,表的列名称已根据ORC文件模式进行了更改

1 个答案:

答案 0 :(得分:-1)

我确实测试了您通过AVRO和ORC文件在数据上提供的bq load命令。

  1. --replace or replace=true
    标志应位于erase all data, and is doing so
    因此,从字面上看,所有表和架构都将被删除,并用文件中的新表和架构替换。

  2. 如果要将数据追加到表中,则需要使用
    --noreplace or --replace=false
    仅当您的ORC文件模式与表中已存在的模式相同时,此标志才能正常工作。

  3. 如果您的数据模式与表中定义的数据模式不同,则需要使用schema_update_option
    --schema_update_option=ALLOW_FIELD_ADDITION

所以最终在您的用户情况下,您只需要使用:

bq load --schema_update_option=ALLOW_FIELD_ADDITION --source_format=ORC <project_id>:<schema>.<table> gs://<bucket_name>/<file_name>