Rmysql dbwritetable con campo.types
Domanda
Ho un frame di dati, chiamato df
, sembra così:
dte, val
2012-01-01, 23.2323
2012-01-02, 34.343
Il tipo sulle colonne è data e numerica. Vorrei scrivere questo su un database MySQL utilizzando una connessione già aperta. La connessione funziona bene perché sono in grado di interrogare la multa DB. Provo a eseguire quanto segue:
dbWriteTable(con, name="table_name", value=df, field.types=list("date", "double(20,10)"))
Questo genera l'errore:
Errore nella funzione (classi, fdef, mtable): impossibile trovare un metodo ereditato per la funzione "make.db.names", per la firma "mysqlconnection", "null"
Se non specifico un campo. Tipi ed eseguo:
dbWriteTable(con, name="table_name", value=df)
Ricevo l'errore:
Errore in mysqlexecstatement (Conn, istruzione, ...): driver RS-dbi: (Impossibile eseguire l'istruzione: blob/colonna di testo 'dte' utilizzato nelle specifiche chiave senza una lunghezza della chiave)
Qualcuno può far luce su questo?
Grazie
Soluzione
Dopo aver giocato con le cose, mi sono reso conto qual è il problema: field.types
Deve essere un nome elenco Vector, non semplicemente un elenco; Inoltre, i nomi delle righe non devono essere inclusi altrimenti abbiamo bisogno di tre tipi di campo. Per l'esempio sopra, quanto segue funziona bene:
dbWriteTable(con, name="table_name", value=df,
field.types = c(dte="date", val="double(20,10)"), row.names=FALSE)