在Mac OSX上创建的RSQLite数据库不在Windows上插入数据

时间:2014-11-02 09:16:56

标签: r sqlite rsqlite

我真的被困在这里了。我在Mac OSX上创建了一个SQLite数据库,现在我正在尝试在Windows上将数据插入其中。我在两个平台上使用RSQLite库在R中完成它。

我试图从数据框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( ... ))

更新:vaettchen使用带有append = TRUE的dbWriteTable的建议工作,谢谢。但是,dbSendQuery仍然存在问题,在尝试删除id = 74的所有条目时请参阅以下错误:

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

感谢任何帮助,这可能只是我无法看到的愚蠢。非常感谢。

1 个答案:

答案 0 :(得分: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。它可能会为大型数据库或频繁的批量更新带来性能提升。