我有一个名为的数据框,df看起来像这样:
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’没有密钥长度)
谁能对此有所启发?
谢谢
在玩完东西之后,我意识到了问题所在:field.types必须是一个命名 列表 向量,而不仅仅是一个列表;此外,不得包含行名,否则我们需要三种字段类型。对于上面的示例,以下工作正常:
field.types
dbWriteTable(con, name="table_name", value=df, field.types = c(dte="date", val="double(20,10)"), row.names=FALSE)