0

私は本当にここで立ち往生しています。Mac OSX で SQLite db を作成しましたが、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( ... ))

UPDATE : append=TRUE で dbWriteTable を使用するという vaettchen による以下の提案はうまくいきました、ありがとう。ただし、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直接使用したことはありません。大規模な DB または頻繁な一括更新のパフォーマンスが向上する場合があります。

于 2014-11-04T01:03:50.280 に答える