小编典典

RMySQL dbWriteTable与field.types

mysql

我有一个名为的数据框,df看起来像这样:

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

列上的类型是日期和数字。我想使用已经打开的连接将其写入MySQL数据库。连接正常,因为我可以查询数据库。我尝试运行以下命令:

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

这将产生错误:

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

如果我未指定field.types并运行:

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

我得到错误:

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

谁能对此有所启发?

谢谢


阅读 368

收藏
2020-05-17

共1个答案

小编典典

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

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