我通过包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一个? 任何想法如何提高速度将非常感激。