You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用R中dbWriteTable写入纯字符数据框到Oracle时类型转换错误

解决R中dbWriteTable写入Oracle时的"Invalid character value for cast specification"错误

问题场景

仅包含字符类型变量的数据框,使用dbWriteTable写入Oracle数据库时触发类型转换错误。

错误信息

Error in result_insert_dataframe(rs@ptr, values, batch_rows) :
nanodbc/nanodbc.cpp:1655: 00000: [RStudio][Support] (40550) Invalid character value for cast specification.

原执行代码

people_df <- people_df %>% 
  rename(
    LAST_NAME      = sn,
    FIRST_NAME     = givenName,
    TITLE          = title,
    PRID           = cn,
    COUNTRY        = co,
    DEPARTMENT     = department,
    DISPLAY_NAME   = displayName
  )

dbWriteTable(con, "TEST_SHINY", people_df, append = TRUE)

目标Oracle表说明

目标表TEST_SHINY包含列:LAST_NAME、FIRST_NAME、JOB_TITLE、PRID、COUNTRY、DEPARTMENT、DISPLAY_NAME,初始定义中部分列的字符长度设置过短。

问题排查与解决

  • 核心原因:数据库表中部分列的字符长度不足以容纳R数据框中的对应字符内容,导致类型转换失败。将所有列的字符长度调整为200后,错误消除。
  • 额外说明:曾出现列名映射错误(将title映射为TITLE,实际表中对应列名为JOB_TITLE),但该问题并非引发本次类型转换报错的原因。

最终可用代码

people_df <- (people_df %>% 
  rename(
    LAST_NAME      = sn,
    FIRST_NAME     = givenName,
    JOB_TITLE      = title,
    PRID           = cn,
    COUNTRY        = co,
    DEPARTMENT     = department,
    DISPLAY_NAME   = displayName
  ) %>% select(LAST_NAME, FIRST_NAME, JOB_TITLE, PRID, COUNTRY, DEPARTMENT, DISPLAY_NAME)
)

dbWriteTable(con, "TEST_SHINY", people_df, append = TRUE)

内容的提问来源于stack exchange,提问作者smackenzie

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.13 01:10:19