2014-11-02 53 views
0

我真的被困在这里。我在Mac OSX上创建了一个SQLite数据库,现在我正试图在Windows上将数据插入到它。我在两个平台上使用RSQLite库在R中执行此操作。在Mac OSX上创建的RSQLite数据库没有在Windows上插入数据

我试图插入来自数据帧x数据:

> str(x) 
'data.frame': 6 obs. of 12 variables: 
$ Julian : int ... 
$ Date  : chr ... 
$ Time  : chr ... 
$ ID  : chr ... 
$ Item  : chr ... 
$ Value : num ... 
$ Payment : chr ... 
$ Type  : chr ... 
$ Customer : chr ... 
$ Operator1: chr ... 
$ Operator2: chr ... 
$ Weekday : int ... 

我尝试以下步骤,并得到以下错误消息:

> db=dbConnect(dbDriver("SQLite"),dbname=f) 
> dbSendQuery(db,"INSERT INTO Entries VALUES(?,?,?,?,?,?,?,?,?,?,?,?)",x) 
Error in .local(conn, statement, ...) : 
    unused argument (list(...)) 

UPDATE:下面的建议由vaettchen使用dbWriteTable与append = TRUE工作,谢谢。但是,仍然存在与dbSendQuery的问题,请参见试图删除具有ID = 74的所有条目时,提示以下错误:

> dbSendQuery(db,"DELETE FROM Entries WHERE ID=?",id) 
Error in .local(conn, statement, ...) : unused argument (74) 

得到任何帮助,它可能只是一些愚蠢的事我看不到。非常感谢。

+1

您认为'dbWriteTable'与'append = TRUE'? – vaettchen 2014-11-02 10:16:04

+0

太棒了,这工作。但我仍然有一个dbSendQuery的问题,我相应地更新了这个问题。 – valuenaut 2014-11-02 11:51:16

回答

1

下面是我在这种情况下是什么在起作用:

id <- 74 
sql <- paste("DELETE FROM Entries WHERE ID=", id) 
dbGetQuery(db, sql) 

如果你想删除多个ID,使用循环:

id <- c(73, 74, 78) 
for(i in id) 
{ 
    sql <- paste("DELETE FROM Entries WHERE ID=", i) 
    dbGetQuery(db, sql) 
} 

声明:我只是一个很偶尔使用RSQLite用户,并且从未直接使用dbSendQuery。它可能会为大型数据库或频繁的批量更新带来性能提升。