Ошибка при вставке столбца даты в базу данных oracle с использованием пакета odb c в R - PullRequest
0 голосов
/ 17 февраля 2020

мы используем соединение odb c для подключения целевой базы данных (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 имеет 1,3 миллиона записей, и при использовании вышеуказанного подхода после вставки 1024 записей скрипт завершается с ошибкой, упомянутой выше.

если мы игнорируем столбец даты и вставляем данные, мы можем вставлять данные в базу данных без каких-либо проблем. Пожалуйста, дайте нам знать, если есть какое-либо другое решение.

1 Ответ

0 голосов
/ 17 февраля 2020

Попробуйте

library(tidyverse)
library(lubridate)

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

, а затем снова запустите код.

...