2014-11-02 4 views
0

저는 정말로 여기에 갇혀 있습니다. Mac OSX에서 SQLite db를 만들었으며 지금 Windows에서 데이터를 INSERT하려고합니다. RSQLite 라이브러리를 사용하여 두 플랫폼 모두에서 R에서이 작업을 수행합니다.Windows에서 데이터를 삽입하지 않는 Mac OSX에서 RSQLite db를 만들었습니다

> 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 : 아래의 제안을 내가 데이터 프레임 x에서 데이터를 삽입하기 위해 노력하고있어

vaettchen에 의해 append = TRUE로 dbWriteTable을 사용하면 감사합니다. 그러나 여전히 dbSendQuery에 문제가, 식 (74)와 함께 모든 항목을 제거하려고 할 때 아래 오류를 참조하십시오

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

어떤 도움을 주셔서 감사합니다, 그냥 내가 볼 수없는 바보 같은 수 있습니다. 많은 감사합니다. 여기

+1

'dbWriteTable'을'append = TRUE'로 간주 했습니까? – vaettchen

+0

위대한,이 일했습니다. 하지만 dbSendQuery에 대한 문제가 여전히 있습니다. 그에 따라 질문을 업데이트했습니다. – valuenaut

답변

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 또는 대량 업데이트의 성능이 향상 될 수 있습니다.