带有field.types的RMySQL dbWriteTable

Ale*_*lex 21 mysql sql rdbms r rmysql

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

dte, val
2012-01-01, 23.2323
2012-01-02, 34.343
Run Code Online (Sandbox Code Playgroud)

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

dbWriteTable(con, name="table_name", value=df, field.types=list("date", "double(20,10)"))
Run Code Online (Sandbox Code Playgroud)

这会生成错误:

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

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

dbWriteTable(con, name="table_name", value=df)
Run Code Online (Sandbox Code Playgroud)

我收到错误:

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

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

谢谢

Ale*_*lex 30

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

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

  • 感谢 @Brooky 提供有关“field.types”对象类更改的提示 (2认同)