在Windows 7 x64上,RMySQL dbWriteTable在文件路径方面遇到问题 背景
我运行了一个MariaDB 5.5的本地实例,在那里我创建了一个包含两个表的数据库。我必须用存储在几千个在Windows 7 x64上,RMySQL dbWriteTable在文件路径方面遇到问题 背景,r,rmysql,R,Rmysql,我运行了一个MariaDB 5.5的本地实例,在那里我创建了一个包含两个表的数据库。我必须用存储在几千个.RData文件中的数据填充这些表。每个文件存储的data.frames的行数在几千到一百万之间 使用RMySQL和函数dbWriteTable似乎是最简单的解决方案。我使用RevolutionR的3.1.1版本(8.0测试版)。操作系统为Win7 x64 MariaDB中的表有两列:ID和VALUE,其名称为TAB。要存储的数据位于对象data.tab中 我做什么 我的发言如下: data.
.RData
文件中的数据填充这些表。每个文件存储的data.frames
的行数在几千到一百万之间
使用RMySQL
和函数dbWriteTable
似乎是最简单的解决方案。我使用RevolutionR的3.1.1版本(8.0测试版)。操作系统为Win7 x64
MariaDB中的表有两列:ID
和VALUE
,其名称为TAB
。要存储的数据位于对象data.tab
中
我做什么
我的发言如下:
data.tab <- data.frame(ID = c(1:3), VAL = c(7:9))
db.con <- dbConnect(drv = MySQL(), user = "root", password = "myPasswrd", dbname="myDBname")
dbWriteTable(conn = db.con, name = "TAB", value = data.tab, append=TRUE, row.names=FALSE, field.types=character(ID="INT",VAL="FLOAT"))
问题
调用上述代码段中的第二行会引发以下错误:
Error in .local(conn, statement, ...) :
sdbi114c7f07039' not found (Errcode: 22)tempRtmpE9YwdP
调用第三行(通过临时csv文件)会导致类似的错误,即路径打印时去掉反斜杠。这与路径扩展有关。调试和打印语句
产生:
“将数据本地填充'C:\\TEMP\\rtmp\\RtmpE9YwdP\\rsdbi114c7f07039'加载到以“\n”结尾的表选项卡行中(ID
,VALUE
)
因此,反斜杠(\\
)和\r
的逃逸似乎是问题所在。不幸的是,我不知道如何处理这件事
回溯(按呼叫顺序):
编辑
如果在语句的步骤11的交互式调试器中,我将\\
替换为路径中的/
,则数据将正确写入数据库。似乎是RMySQL中的问题。我修复了该问题,并在GitHub上提交了一个拉取请求:
对我来说,它现在可以在我的电脑上工作了。您可以编译和安装,或者等到CRAN上发布新版本的软件包
编辑:它现在在CRAN上,版本0.10.1这里有同样的问题。标准R 3.1.2和RMySQL 0.10
Error in .local(conn, statement, ...) :
sdbi114c7f07039' not found (Errcode: 22)tempRtmpE9YwdP
1: dbWriteTable(conn = db.con, name = "t_ftr", value = fut.tbl, append = TRUE, row.names = FALSE,
2: .valueClassTest({standardGeneric("dbWriteTable")}, "logical", "dbWriteTable")
3: is(object, Cl)
4: is(object, Cl)
5: .local(conn, name, value, ...)
6: dbGetQuery(conn, sql)
7: dbGetQuery(conn, sql)
8: dbSendQuery(conn, statement, ...)
9: .valueClassTest(standardGeneric("dbSendQuery"), "DBIResult", "dbSendQuery")
10: is(object, Cl)
11: is(object, Cl)
12: .local(conn, statement, ...)
13: .Call(RS_MySQL_exec, conn@Id, as.character(statement))