RODBC sqlSave崩溃R前端

时间:2015-02-12 19:29:48

标签: r ms-access crash rodbc

我正在尝试使用RODBC包中的sqlSave写入msaccess数据库。我打开与数据库的连接没有问题。我能够从表格中读取。我甚至可以使用sqlSave进行某些简单的更新,但对于下表和以下更新,R前端崩溃。当使用实际计算数据从Rscript运行此操作时,以及在运行以下命令时从Rstudio运行时,都会发生这种情况。我在32位模式下运行R 3.1(为了兼容访问)。

我创建了一个频道'ch',我打算在名为'data.mdb'的数据库中写一个名为'Test_Table'的表

test <- c(1,"Fixed","Upward","Gas", "2014-07-31",14,0.99)

test.df <- as.data.frame(t(test))

names(test.df) <- c("ID","Contract_Type","Direction", "Name_Of_Underlying","Data_Date","Months_To_Maturity","Absolute_Price_Move")

types <- c("integer","varchar","varchar","varchar","datetime","integer","double")
names(types) <- names(test.df)

sqlSave(ch, dat = test.df, tablename = "Test_Table",varTypes = types, append = T, verbose = T,safer = T)

我也尝试过更安全= F。

当我在RStudio中运行时,我得到了'炸弹'标志,并被要求开始新的会话。当我通过Rscript运行时,命令行输出表明正在发生所有正确的绑定并且参数是正确的。然后弹出一个窗口,说明R for Windows前端已停止工作,并且没有任何内容写入数据库。

欢迎任何想法。

2 个答案:

答案 0 :(得分:9)

当我尝试使用sqlSave()将数据附加到MS SQL中的现有表时,我遇到了类似的问题。当我将参数rownames = FALSE添加到sqlSave时,它已经开始工作了。在RODBC包描述中有:

rownames:如果是逻辑的,请将行名保存为表中的第一列rownames吗?

默认值为TRUE,所以我猜RStudio崩溃了,因为我在数据库的表中没有列名。

答案 1 :(得分:0)

我在附加行时发生了几次这种情况。在我的情况下,在数据框中有额外的列似乎是问题。当我从数据框中删除不在表中的列时,它可以工作。