RODBC中的sqlSave在数据库中逐行写入

时间:2014-03-14 15:23:27

标签: r oracle11g rodbc

我通过包RODBC中的函数sqlSave在Oracle数据库中写入带有6列(1个字符串,2个日期,3个双精度)的250K行。 数据库是Oracle 11,odbc Connection的驱动程序是11.02.00.03 这是我的代码:

ch <- odbcConnect("mydb", uid="id", pwd="pwd")
sqlSave(ch, myRobject, tablename = "myTable", safer=TRUE, rownames = FALSE, append = TRUE, verbose = FALSE, nastring = NULL, fast = TRUE)

myRobject没有密钥。 myTable具有一个日期列的索引。 sqlSave大约需要15分钟才能将数据帧写入myTable。我尝试使用带有.csv文件中数据的sqlLoader执行相同的任务,这要快得多(大约需要8秒)。我知道预计sqlLoader会更快。然而,时差仍然让我感到震惊。

即使我设置选项

,我还要补充一下
  

快速= TRUE

我看到sqlSave一次将数据写入数据库中。根据RODBC文档,它应该尝试将数据帧写为块

  

fast = ...如果为true,请使用参数化的INSERT INTO或UPDATE查询   在一次操作中写下所有数据。

是数据库问题吗?或者改为R / ODBC一个? 任何想法如何提高速度将非常感激。

0 个答案:

没有答案