我是dplyr包的数据库连接功能的新手,但我对将它用于SQLite连接非常感兴趣.我按照本教程创建了一个SQLite数据库(my_db)
my_db <- src_sqlite("my_db.sqlite3", create = T)
Run Code Online (Sandbox Code Playgroud)
并插入一个数据帧(df)作为该数据库的表(my_table).
copy_to(my_db,df,"my_table")
Run Code Online (Sandbox Code Playgroud)
现在我想在此表中插入新行.我试过这样的事情(是的,我必须承认它看起来没什么前途......但我还是试了一下):
collect(build_sql("INSERT INTO my_table VALUES (",newdf,")", con=my_db))
Run Code Online (Sandbox Code Playgroud)
有没有人知道是否可以使用dplyr向现有的sqlite db表添加行?或者您将如何处理这个问题?提前谢谢了!
Sta*_*ich 56
不,你可以在里面做到这一切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
Run Code Online (Sandbox Code Playgroud)
Pau*_*eux 13
在这个新闻组中.哈德利解释了这个功能的目的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)
Run Code Online (Sandbox Code Playgroud)
hrb*_*str 10
您可以对通过创建的数据库/表执行SQL操作dplyr,但必须恢复为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")')
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
8316 次 |
| 最近记录: |