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')
誰かがこれに光を当てることができますか?
ありがとう
物事で遊んだ後、私は問題が何であるかを理解しました:field.types
名前を付ける必要があります リスト 単なるリストではなく、ベクトル。さらに、行名を含めないでください。含めない場合は、3つのフィールドタイプが必要です。上記の例では、以下が正常に機能します。
dbWriteTable(con, name="table_name", value=df,
field.types = c(dte="date", val="double(20,10)"), row.names=FALSE)