我正在尝试将一个BigQuery表移动到一个新的模式,该模式具有一些额外的新NULLABLE字段,并且其中一个字段f
已经变为REQUIRED(在旧模式中它们是NULLABLE)。
我尝试通过命令
使用新架构更新表 bq update <table> <new_schema>
我收到了错误
BigQuery error in update operation: Provided Schema does not match Table
作为第二次尝试,我使用新字段创建了一个临时空表,然后尝试在其中附加来自查询的数据(来自旧表的SELECT *),但是我收到错误:
Invalid schema update. Field f has changed mode from REQUIRED to NULLABLE
有没有办法轻松完成此迁移?当然,我可以忽略表f
实际为NULL的表行。如果BigQuery可以从查询中推断出它会很酷。我试着做
SELECT * FROM old_table WHERE f IS NOT NULL
并使用新架构将结果附加到表中,但这不起作用。
答案 0 :(得分:2)
尝试使用空字符串,其中f为null。
CASE
WHEN f IS NULL THEN ""
ELSE f
END as f
答案 1 :(得分:0)
使用第二种方法 - 创建新表并在那里附加数据。
但请使用StandardSQL dialect
。它将避免&#34;改变模式&#34;错误。
如果您尝试插入NULL,则查询仍然会失败。