使用bq mk命令创建BigQuery外部表时遇‘Field missing name’错误
BigQuery创建外部表错误解决方法
错误根源
- JSON语法错误:你的schema文件开头使用了
["email_categorie":{...}]的错误格式——JSON数组中不能包含键值对结构,这会直接导致BigQuery解析失败。 - 结构冗余错误:你在
schema.fields数组内嵌套了额外的csvOptions和schema层级,BigQuery会将这个嵌套对象识别为一个表字段,但该字段缺少必填的name属性,因此触发“Field missing name”报错。
修正后的schema文件
替换原schema文件为以下正确格式,去掉错误的数组包裹和冗余嵌套:
{ "csvOptions": { "allowJaggedRows": true, "allowQuotedNewlines": true, "encoding": "UTF-8", "fieldDelimiter": ";", "preserveAsciiControlCharacters": false, "quote": "\"", "skipLeadingRows": 1 }, "schema": { "fields": [ { "name": "suffixe", "type": "STRING" }, { "name": "categorie", "type": "STRING" } ] }, "sourceFormat": "CSV", "sourceUris": [ "https://drive.google.com/open?id=XXXXXX" ] }
注意:
skipLeadingRows要设置为数字类型(不要加引号),否则会引发解析错误。
修正后的创建命令
由于schema文件中已经指定了数据源地址和格式,命令无需额外添加@CSV=https://...参数:
bq mk --external_table_definition=./schema_file.json brut__ideas.email_categorie
额外注意事项
确保Google Drive文件已设置正确权限,允许BigQuery服务账号访问该文件。
内容的提问来源于stack exchange,提问作者firsni
相关产品推荐
相关产品推荐

