rjdbc dbSendUpdate ORA-12899 值对于列来说太大

问题描述

我有一个表的长度为 varchar(500) 的列,但是当我尝试从 R 写入该表时,出现错误,该列超过最大字符数,即(实际:295,最大值:255)。

我该如何解决这个问题,或者如何扩展我的字符长度?

解决方法

难以回答,因为您的上下文并不准确。

根据您使用的函数,它会在追加之前运行 CREATE TABLE。 这时候可能会使用oracle默认(255个字符)作为一个字符列。

对于此任务,我首先在架构中创建表,然后才使用 DBI::dbWriteTable 和 append = TRUE 来添加新行。使用 append = FALSE,在附加到目标表之前,首先“重新生成”表或使用默认长度 255 个字符列(如果 tibble 列是字符)临时创建的表。错误来了。我认为相同的背景。

如前所述,您还必须在此上下文中检查非 ASCII 字符(例如,由于非 ASCII 字符集,当某些列长度大于 500 时)。