我使用“ dbWriteTable ”发现了错误,但找不到任何线索来处理它。错误是一样的:
.oci.WriteTable(conn, name, value, row.names = row.names, overwrite = overwrite, 中的错误:
.oci.GetQuery(con, stmt, data = value) 中的错误:ORA-00913:值太多
我得到了这种结构的 Oracle 表(Oracle 脚本的摘录):
create table My_table
(
card_id NUMBER(4),
predictor VARCHAR2(1000),
interval NUMBER(4),
attributes VARCHAR2(1000),
scoring NUMBER(20,10),
comments VARCHAR2(1000),
uploaded DATE
)
数据框仅包含一行,其结构如下(“str”函数的 R 输出 - str(x)):
'data.frame': 1 obs. of 7 variables:
$ CARD_ID : int 36
$ PREDICTOR : chr "YEAR"
$ INTERVAL : int 1
$ ATTRIBUTES: chr ">= 1945 < 1960"
$ SCORING : int 7000
$ COMMENTS : chr "no comments"
$ UPLOADED : Date, format: "2016-09-26"
建立连接的脚本如下:
drv <- dbDriver("Oracle")
con <- dbConnect(drv, user, password, DB_name,bulk_read = rows_at_time)
将数据框插入 Oracle 表的脚本如下:
dbWriteTable(con, Oracle_table, My_dataframe, row.names = FALSE, overwrite = FALSE,
append = TRUE, ora.number = TRUE, schema = NULL, date = FALSE
)
所以只有dbWriteTable 会产生以下错误:
.oci.GetQuery(con, stmt, data = value) 中的错误:ORA-00913:值太多
表的结构类似于数据框一。与其他数据集和其他 Oracle 表的使用似乎没问题,但不适用于此数据框。我很高兴听到任何关于如何处理此错误的消息。