web-dev-qa-db-ja.com

field.typesを使用したRMySQLdbWriteTable

dfという名前のデータフレームがあります。これは次のようになります。

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

列のタイプは日付と数値です。すでに開いている接続を使用して、これをMySQLデータベースに書き込みたいと思います。 dbにクエリを実行できるため、接続は正常に機能します。私は以下を実行しようとします:

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

これにより、エラーが生成されます。

関数(classes、fdef、mtable)のエラー:署名 "MySQLConnection"、 "NULL"の関数 "make.db.names"の継承されたメソッドが見つかりません

Field.typesを指定せずに、次のコマンドを実行した場合:

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

エラーが発生します:

MysqlExecStatement(conn、statement、...)のエラー:RS-DBIドライバー:(ステートメントを実行できませんでした:キーの長さがないキー指定で使用されるBLOB/TEXT列 'dte')

誰かがこれに光を当てることができますか?

ありがとう

21
Alex

物事で遊んだ後、私は問題が何であるかを理解しました:field.types名前を付ける必要があります リスト 単なるリストではなく、ベクトル。さらに、行名を含めないでください。含めない場合は、3つのフィールドタイプが必要です。上記の例では、以下が正常に機能します。

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