ROracle包的.oci.WriteTable出错

时间:2016-09-26 16:21:45

标签: r roracle

我使用' 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 outpur - 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表的使用似乎没问题,但是没有这个数据帧。 我很高兴听到如何处理这个错误。

1 个答案:

答案 0 :(得分:0)

好吧,我找到了解决这个错误的方法。 我使用了 dbGetQuery(con,script,Oracle_table)。它工作得很好。该脚本使用如下:

  

脚本&lt; - 粘贴(&#34;插入&#34;,user_card_table,&#34;值(:1,:2,:3,:4,:5,:6,:7)& #34;)

但我想知道为什么 dbWriteTable 中出现错误,因为具有类似功能的另一个脚本运行正常。