0

我真的被困在这里了。我在 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)

感谢任何帮助,它可能只是我看不到的愚蠢的东西。非常感谢。

4

1 回答 1

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直接使用过。它可能会为大型数据库或频繁的批量更新带来性能提升。

于 2014-11-04T01:03:50.280 回答