R到BigQuery数据上传错误

问题描述 投票:1回答:1

我正在使用R包“bigrquery”将数据从R数据帧上传到现有的BigQuery表中,如下所示:

mybq = bq_table(project='...', dataset='...', table=...)
bq_table_upload(x=mybq, values=..., create_disposition='CREATE_NEVER', 
                write_disposition='WRITE_APPEND')

但我是以下错误消息:

错误:架构更新无效。字段NewID已将类型从STRING更改为INTEGER

BigQuery似乎是自动检测数据格式,并错误地认为NewID列(其值为“00487”)在数字实际为字符串时是数字。当我向NewID值添加“x”字符时,错误消失,上传功能完美。有没有办法在使用“bigrquery”包上传数据时禁用自动检测?

r google-bigquery
1个回答
2
投票

同一个库中的bq_perform_load函数应该是一个解决方案。在此函数中,您可以使用参数fields指定模式,因此Bigquery不会自动检测模式,如here所述。

我测试了它,并在我的结束。我创建了一个包含两列(STRING,STRING)的表,这是我的源数据:

0017    0015
0123    1234
1022    1202

我在R中运行以下命令使其工作:

bq_perform_load('MY_PROJECT.MYDATASET.MYTABLE', "MY_GCS_OBJECT_LINK", nskip = 0, fields = list(bq_field("test1", "string"),bq_field("test2", "string")) , source_format = "CSV",create_disposition = "CREATE_NEVER", write_disposition = "WRITE_APPEND")

注意:我第一次尝试使用fields = NULL运行相同的命令,但它失败了。

© www.soinside.com 2019 - 2024. All rights reserved.