热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

在MacOSX上创建的RSQLite数据库不在Windows上插入数据-RSQLitedbcreatedonMacOSXnotinsertingdataonWindows

Imreallystuckhere.IcreatedaSQLitedbontheMacOSX,andnowamtryingtoINSERTdataintoi

I'm really stuck here. I created a SQLite db on the Mac OSX, and now am trying to INSERT data into it on Windows. I'm doing it in R on both platforms, using the RSQLite library.

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

I'm trying to insert the data from data frame x:

我正在尝试从数据框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 ...

I try the following steps and get the error message below:

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

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

UPDATE: The suggestion below by vaettchen of using dbWriteTable with append=TRUE worked, thanks. However, there is still an issue with dbSendQuery, see error below when trying to remove all entries with id=74:

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

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

Appreciate any help, it might just be something stupid I can't see. Many thanks.

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

1 个解决方案

#1


1  

Here is what works for me in such a situation:

在这种情况下,这对我有用:

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

If you want to remove more than one id, use a loop:

如果要删除多个id,请使用循环:

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

Disclaimer: I'm only a casual RSQLite user and never used dbSendQuery directly. It may yield performance gains for large DBs or frequent bulk updates.

免责声明:我只是一个偶然的RSQLite用户,从未直接使用过dbSendQuery。它可能会为大型DB或频繁的批量更新带来性能提升。


推荐阅读
author-avatar
芬妮诗婚纱厂
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有