mysql - RODBC sqlSave 的问题

标签 mysql r rodbc

我在使用 RODBC 将数据框插入 mySql 数据库时遇到一些困难。 下面是我正在使用的代码:

data <- data.frame(analysedDataID=c(1,2,3), plateWell=c("a","b","c"), screenPlateOrder=c(1,2,3), wellData=c("A","B","C"))

con <- odbcConnect(DSN, uid="user_id", pwd="some_password")
query <- sqlSave(con, data, tablename = 'wellAnalysedDataTable', rownames=FALSE, append=TRUE)

当我尝试执行此操作时,我收到以下错误消息:

Error in odbcUpdate(channel, query, mydata, coldata[m, ], test = test,  : 
missing columns in 'data'

这是我要将数据插入的特定表:

+------------------+-------------+------+-----+---------+-------+
| Field            | Type        | Null | Key | Default | Extra |
+------------------+-------------+------+-----+---------+-------+
| analysedDataID   | int(10)     | YES  |     | NULL    |       | 
| plateWell        | varchar(10) | YES  |     | NULL    |       | 
| screenPlateOrder | int(10)     | YES  |     | NULL    |       | 
| wellData         | varchar(30) | YES  |     | NULL    |       | 
+------------------+-------------+------+-----+---------+-------+

此时我真的很困惑,因为我一遍又一遍地阅读文档,但就是无法让它工作。任何帮助将不胜感激!

干杯!


谢谢!我添加了您建议的更改,并且案例似乎不再有问题。但是我不断收到以下错误消息:

'index column(s) analysedDataID plateWell screenPlateOrder wellData not in data frame'

我正在执行的语句是:

sqlUpdate(con, data, tablename="wellAnalysedDataTable", index=c("analysedDataID", "plateWell", "screenPlateOrder", "wellData"))

这对我来说没有任何意义,因为列已经在具有相同列名的数据框中。

最佳答案

我知道这是一个非常老的问题,但是我刚才遇到了(并为我的实例解决了)同样的问题,得到了这个错误

Error in odbcUpdate(channel, query, mydata, coldata[m, ], test = test,  : 
  missing columns in 'data'

来自使用

sqlSave(

在 rodbc 包中。

我通过设置解决了

,fast = F

如果第一个 google 搜索结果中的其他人落在这里,希望这对您有所帮助

编辑: 所以我从那以后就更多地研究了这个。 按照我在下面的建议将标志设置为“F”时,将行逐行插入数据库。 虽然它是“T”,但如果一行不正确,它就会失败,但现在那一行失败了,而你不知道它。所以数据库可能丢失了您认为在那里的数据。 检查数据库中的行数与您希望从数据框中插入的行数。 您可能有一个不兼容的值。我现在要做的是在循环中使用“粘贴”函数来创建一个字符串,例如“插入 tableName 值(“eg1”,“eg2”)”这样我就可以得到错误消息,说明为什么它没有去进入数据库

关于mysql - RODBC sqlSave 的问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6910592/

相关文章:

r - 如何将 sf 导入到包中以运行依赖于 lwgeom 的函数?

Rodbc 错误 : Error in sqlSave(DataConnection, dataframeInput,表名 = tableNameString,:无法附加到表

mysql - Lua string.format 转义

MySQL 只选择不为空的列

mysql - 将 Wikipedia 导入本地 Media Wiki 会创建充满模板引用的页面

r - 制作扩展序列的最快方法

r - ODBC 在 MS Excel 中工作正常,但在 R 中无效

sql-server - R:使用 ODBC 和 SQL Server 读取性能非常慢

RODBC 在 sqlQuery() 的连接中使用 Data.Frame

mysql - sql存储过程中是否可以有多维结果集