带有field.types的RMySQL dbWriteTable

时间:2012-01-14 17:59:44

标签: mysql sql r rdbms rmysql

我有一个名为df的数据框,如下所示:

dte, val
2012-01-01, 23.2323
2012-01-02, 34.343

列上的类型是日期和数字。我想使用已经打开的连接将其写入MySQL数据库。连接工作正常,因为我能够查询db罚款。我尝试运行以下内容:

dbWriteTable(con, name="table_name", value=df, field.types=list("date", "double(20,10)"))

这会产生错误:

  

函数错误(classes,fdef,mtable):无法为函数“make.db.names”找到继承的方法,签名为“MySQLConnection”,“NULL”

如果我没有指定field.types,请运行:

dbWriteTable(con, name="table_name", value=df)

我收到错误:

  

mysqlExecStatement(conn,statement,...)出错:RS-DBI驱动程序:(无法运行语句:密钥规范中使用的BLOB / TEXT列'dte'没有密钥长度)

任何人都可以对此有所了解吗?

由于

2 个答案:

答案 0 :(得分:28)

在玩完东西之后,我意识到问题所在:field.types必须是NAMED list 向量,而不仅仅是列表;此外,不得包含行名称,否则我们需要三种字段类型。对于上面的示例,以下工作正常:

dbWriteTable(con, name="table_name", value=df,
  field.types = c(dte="date", val="double(20,10)"), row.names=FALSE)

答案 1 :(得分:-1)

那是因为表名。 mysql表名不要使用大写字母。