R到BigQuery数据上传错误

时间:2018-07-05 00:13:21

标签: r google-bigquery

我正在使用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”包上传数据时,有什么方法可以禁用自动检测?

1 个答案:

答案 0 :(得分: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运行相同的命令,但失败了。