RMYSQL DBWriteable con Field.Types
Pregunta
Tengo un marco de datos, llamado df
, que se ve así:
dte, val
2012-01-01, 23.2323
2012-01-02, 34.343
El tipo de columnas es fecha y numérica. Me gustaría escribir esto en una base de datos MySQL utilizando una conexión ya abierta. La conexión funciona bien, ya que puedo consultar la multa de DB. Intento ejecutar lo siguiente:
dbWriteTable(con, name="table_name", value=df, field.types=list("date", "double(20,10)"))
Esto genera el error:
Error en la función (clases, FDEF, MTable): No se puede encontrar un método heredado para la función "make.db.names", para la firma "mySqlConnection", "null"
Si no especifico un campo. Types y ejecuto:
dbWriteTable(con, name="table_name", value=df)
Recibo el error:
Error en mySQLExecStatement (Conn, Declaración, ...): controlador RS-DBI: (no se pudo ejecutar la declaración: columna de blob/text 'dte' utilizado en la especificación de clave sin una longitud de clave)
¿Alguien puede arrojar algo de luz sobre esto?
Gracias
Solución
Después de jugar con cosas, me di cuenta de cuál es el problema: field.types
Debe ser un nombrado lista vector, no simplemente una lista; Además, los nombres de la fila no deben incluirse de lo contrario necesitamos tres tipos de campo. Para el ejemplo anterior, lo siguiente funciona bien:
dbWriteTable(con, name="table_name", value=df,
field.types = c(dte="date", val="double(20,10)"), row.names=FALSE)