Dplyrパッケージのデータベース接続機能は初めてですが、SQLite接続に使用することに非常に興味があります。私は このチュートリアル に従い、SQLiteデータベース(my_db)を作成しました
my_db <- src_sqlite("my_db.sqlite3", create = T)
そして、このデータベースのテーブル(my_table)としてデータフレーム(df)を挿入しました。
copy_to(my_db,df,"my_table")
次に、このテーブルに新しい行を挿入します。私はこのようなことを試しました(そして、はい、それが有望に見えないことを認めなければなりません...しかし、私はまだそれを試しました):
collect(build_sql("INSERT INTO my_table VALUES (",newdf,")", con=my_db))
Dplyrを使用して既存のsqlitedbテーブルに行を追加することさえ可能かどうか誰かが知っていますか?または、この問題にどのように対処しますか?よろしくお願いします!
candplyr
を介して作成されたデータベース/テーブルに対してSQL操作を実行しますが、RSQLite/DBI呼び出しに戻り、データベース/テーブルの作成方法を変更する必要があります。
library(dplyr)
my_db <- src_sqlite("my_db.sqlite3", create=TRUE)
copy_to(my_db, iris, "my_table", temporary=FALSE) # need to set temporary to FALSE
# grab the db connection from the object created by src_sqlite
# and issue the INSERT That way
res <- dbSendQuery(my_db$con,
'INSERT INTO my_table VALUES (9.9, 9.9, 9.9, 9.9, "new")')
いいえ、あなたはcanこれをすべてdplyr
内で行います。
require(dplyr)
my_db <- src_sqlite( "my_db.sqlite3", create = TRUE) # create src
copy_to( my_db, iris, "my_table", temporary = FALSE) # create table
newdf = iris # create new data
db_insert_into( con = my_db$con, table = "my_table", values = newdf) # insert into
このニュースグループ 。ハドリーは関数dplyr::copy_to()
の目的を説明しました。一時的なテストテーブルを作成することを目的としています。電子メール交換は、RMySQL::dbWriteTable()
を使用して既存のテーブルにデータを追加することを提案することで終了します。上記の受け入れられた回答で説明されているように、同じことがSQLiteデータベースにも当てはまります。
既存のデータベーステーブルと同じ列名を持つデータフレームdtf
を追加するために、次を使用しました。
library(RMySQL)
DB <- dbConnect(MySQL(), user="usename", Host="localhost",
password="***", dbname="dbname")
dbWriteTable(DB, "tablename", dtf, append=TRUE, row.names = FALSE)
dplyr
を使用してデータベースに書き込む主な理由は、コードの途中で言語を切り替えたくないからです。あなたの質問に対する最善の解決策は、 StatSandwich で示されているように、dplyr
のdb_insert_into()
関数を使用することです。