2012-06-24 3 views
2

RMySQL 패키지를 사용하여 임시 테이블을 만드는 방법이 있습니까? 그렇다면 올바른 방법은 무엇입니까? 특히, R 세션의 데이터 프레임을 임시 테이블에 쓰려고합니다. 몇 가지 프로세스가 병렬로 실행되며 이름 충돌에 대해 걱정하지 않으려 고합니다. 따라서 세션을 개별 세션에서만 볼 수 있도록 임시 세션으로 만들고 싶습니다. 해결책은 dbWritetable이 아니라 dbSendQuery("create temporary table tbl;")이 아니어야합니다.RMySQL을 사용하는 임시 테이블

참고 : 나는 수동 dbSendQuery(con, "create temporary table x (x int)")를 사용하여 임시 테이블을 만든 다음 단순히 dbWriteTable() 그것을 무시 제안 그물에 몇 가지 물건을 발견했다. 이것은 작동하지 않습니다.

+0

'임시 테이블 생성'행 다음에'dbSendQuery (con, "COMMIT")'를 실행하면 문제가 해결됩니까? 의례 : https://stat.ethz.ch/pipermail/r-sig-db/2009q1/000575.html – thelatemail

+0

나는 그것을 시도 할 것이다. 제안 해 주셔서 감사합니다! – Alex

+0

임시 테이블을 만든 후'dbWriteTable (..., append = TRUE, overwrite = FALSE)'을 실행하십시오. 또한 다른 프로그램을 사용하여 데이터베이스에 연결하고 테이블이 있는지 확인하십시오. – Zach

답변

0

을 할 수있는 MySQL의 계정 제한에 관한 것입니다 따라

https://code.google.com/p/sqldf/

기본적으로 sqlite 용이지만 MySQL (결코 시도하지 않은)에서도 작동합니다. 이 패키지는 견고하며 잘 문서화되어 있습니다.

3

나는 바퀴를 재발 방지 및 사용, 당신은

dbSendQuery(con, "create temporary table x (x int);") 
dbSendQuery(con, "drop temporary table x;") 

등 이러한 유형의 작업에 대한

+0

내 질문에 좀 더 구체적이어야 했어. 죄송합니다. 업데이트 된 – Alex

0

실제로는 known issue in RMySQL입니다. 가장 좋은 방법은 데이터를 임시 파일에 쓰고 RMySQL::mysqlWriteTable을 가이드로 사용하여 LOAD DATA LOCAL INFILE 문을 직접 구성하는 것입니다.

보너스 포인트의 경우, tempy 파일 작업을 위해 RMySQL :: mysqlWriteTable을 패치 할 수 있다면 github repo으로 풀 요청을 보내십시오.