使用R中的odbc软件包将日期列插入oracle数据库时出错

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

我们正在使用odbc连接来连接目标数据库(oracle数据库),我们需要将数据帧插入目标数据库。我们正在使用dbBind()将数据帧插入数据库。请找到下面提到的示例数据和代码。

Dataframe: Inputdata
  column1    column2    column3      date_column  column4
  <chr>      <chr>      <chr>        <chr>         <chr>
1 1111       6          fff          2015-11-01    MCA
2 2222       1          aaa          2006-12-02    NA
3 3333       2          bbb          2007-10-03    NA
4 4444       3          ccc          2008-01-04    NA
5 555        4          ddd          2007-11-05    NA
6 6666       5          eee          2010-11-06    BCH


R script :
Target1Conn<-dbConnect(odbc::odbc(), dsn = "TARGETDB", uid = "username", pwd = "password")
insert <- dbSendQuery(Target1Conn, paste0('insert into ', outputTableName, '(column1,column2,column3,date_column,column4) values(?,?,?,?,?)'))
dbBind(insert, list(InputData$column1,InputData$column2,InputData$column3,InputData$date_column,InputData$column4))"

Error:
Error in result_bind(res@ptr, as.list(params), batch_rows) :
  nanodbc/nanodbc.cpp:1617: 00000: [Oracle][ODBC][Ora]ORA-01861: literal does not match format string

我的DataFrame有130万条记录,并且在插入1024条记录后使用上述方法,脚本因上述错误而失败。

如果忽略日期列并插入数据,则可以将数据插入数据库而没有任何问题。如果有其他解决方案,请告知我们。

r odbc dbi
1个回答
0
投票

尝试

library(tidyverse)
library(lubridate)

df <- df %>%
    mutate(date_column = ymd(date_column))

然后再次运行您的代码。

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