写入BigQuery时出现DBI :: dbWriteTable错误-尝试将字符串强制转换为int

问题描述

在AI笔记本中,我有以下内容

%%r
tempdf %>% summary() %>% print()

DBI::dbWriteTable(
    conn=clinvar_conn,name=table_name,value=tempdf,overwrite=T
)

给予

    CHROM               POS                 ID                REF           
 Length:775501      Length:775501      Length:775501      Length:775501     
 Class :character   Class :character   Class :character   Class :character  
 Mode  :character   Mode  :character   Mode  :character   Mode  :character  
     ALT                QUAL              FILTER              INFO          
 Length:775501      Length:775501      Length:775501      Length:775501     
 Class :character   Class :character   Class :character   Class :character  
 Mode  :character   Mode  :character   Mode  :character   Mode  :character  


Error: Job 'eacri-genomics.job_om9Un5yZVSHjLpt0d4ZzyF743zjy.US' Failed
✖ Error while reading data,error message: JSON processing encountered too many errors,giving up. Rows: 740479; errors: 1; max bad: 0; error percent: 0 [invalid]
✖ Error while reading data,error message: JSON parsing error in row starting at position 392688729: Could not convert value 'string_value: "X"' to integer. Field: CHROM; Value: X [invalid]
Run `rlang::last_error()` to see where the error occurred.

I made sure to cast all the data as character. Why is it trying to convert "X" to an integer?

解决方法

重新发布评论以求完整性。

如果只有775501行,位置392688729似乎很高。这使我怀疑您的某些数据类型不是假定的。鉴于错误消息中提到了JSON,也许您的某些字段是JSON对象,并且将它们强制转换为字符串并不符合您的假设。

两种可能的调查方式:

  1. 您的某些文本字段超过了最大字符数
  2. 您的输入中有一个未转义的引号,表示多个值被误读为单个值