我尝试使用架构插入bigquery:
require 'gcloud'
gc = Gcloud.new 'PROJECT_ID'
bq = gc.bigquery
ds = bq.dataset 'MY_DATASET'
t = ds.create_table 'MY_TABLE'
t.schema = { fields: [ { name: 'Name', type: 'STRING' } ] }
t.insert [{'name' => 'test1'}]
正如所料,我的终端控制台显示输出错误:
[{“reason”=>“无效”,“location”=>“名称”, “debugInfo”=>“generic :: not_found:没有这样的字段。”,“message”=>“没有这样的 字段。“}]
当我尝试更新架构以插入密钥名称:
时t.schema = {
fields: [
{ name: 'Name', type: 'STRING' },
{ name: 'name', type: 'STRING' }
]
}
显示例外:
Gcloud :: Bigquery :: ApiError:架构中已存在字段名称
任何建议如何解决这个问题?这是一个BigQuery错误吗?
答案 0 :(得分:2)
插入数据时(至少通过流媒体,t.insert
似乎使用),字段名称区分大小写。因此,如果您更新为“名称”,则应该使用您的架构。
t.insert [{'Name' => 'test1'}]
但是,在查询中,字段名称不区分大小写,因此对于具有仅根据大小写不同的字段名称的表,它是无效的:它们是无法区分的。这导致第二个错误,“字段名称已存在于架构中”。
这无疑令人困惑。我将研究是否可以使用户更容易预测区分大小写。