在使用“ 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文件模式进行了更改
答案 0 :(得分:-1)
我确实测试了您通过AVRO和ORC文件在数据上提供的bq load命令。
--replace or replace=true
标志应位于erase all data, and is doing so。
因此,从字面上看,所有表和架构都将被删除,并用文件中的新表和架构替换。
如果要将数据追加到表中,则需要使用
--noreplace or --replace=false
仅当您的ORC文件模式与表中已存在的模式相同时,此标志才能正常工作。
如果您的数据模式与表中定义的数据模式不同,则需要使用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>