RODBC sqlSave 使 R 前端崩溃

问题描述 投票:0回答:3

我正在尝试使用 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 前端已停止工作,并且没有任何内容写入数据库。

欢迎任何想法。

r ms-access crash rodbc
3个回答
12
投票

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

rownames:如果符合逻辑,将行名称保存为表中的第一列rowname?

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


1
投票

在追加行时,我已经发生过几次这种情况。就我而言,数据框中存在额外的列似乎是问题所在。当我从数据框中删除不在表中的列时,它起作用了。


0
投票

我遇到了类似的问题,我添加了 rownames = F 和 fast = F 并且它起作用了。我在同一个编辑中添加了这两个内容,所以我不确定哪个导致脚本工作。

© www.soinside.com 2019 - 2024. All rights reserved.