2016-10-28 5 views
1

AWS RDS에서 MariaDb에 저장하는 테이블이 많습니다. 테이블을 수동으로 저장할 수 있습니다. 그러나 할 루프를 만들고 dbWriteTable 명령 구문을 알아낼 수 없습니다. 라이브러리 (RMySQL)r dbWriteTable in loop

dbWriteTable(con, "Account" , Account, overwrite = T) 
dbWriteTable(con, "Campaign", Campaign, overwrite = T) 
dbWriteTable(con, "Contact" , Contact, overwrite = T) 
dbWriteTable(con, "User", User, overwrite =T) 

대신 내가 루프에서 그것을하고 싶습니다.

nm = c("Account", "Campaign", "Contact", "User") 

for (i in 1:length(nm)) { 

    dbWriteTable(con, nm[i], paste(nm[i]), overwrite = TRUE) 
} 
+0

얻을'시도 (nm의 [I])'대신 paste''의. – Zach

+0

eval (substitute (expr), envir, enclos)에 오류가 있습니다 : 외부 포인터가 유효하지 않습니다. 나는 dbWriteTable가 어떤 이유로 든 멍청한 –

+1

이라는 것을 발견했다. get0()은 작동하지만 get()은 작동하지 않는다. 팁 감사합니다 –

답변

2

:

nm = c("Account", "Campaign", "Contact", "User") 

for (i in 1:length(nm)) { 
    dbWriteTable(con, nm[i], get0(nm[i]), overwrite = TRUE) 
} 
0

대신을 시도해보십시오

for (i in nm){ 
    dbWriteTable(con, i, paste(i), overwrite = TRUE) 
} 

당신은 내가 직접 목록에서 해당 개체를 나타 내기 때문에, 브래킷 원래 목록에서 I를 추출 할 필요가 없습니다. 기본적으로 nm의 각 인스턴스에 대해 i라는 db 테이블 (목록의 단어 중 하나임)에 작성하고 i 값을 이름으로 붙여 넣습니다. 대신 작동과 같이 pasteget0를 사용

위의 코멘트를
+0

나는 오류가 발생. 파일 오류 (파일, "rt") : 연결을 열 수 없습니다. 경고 메시지 : 파일 (파일, "rt") : '계정'파일을 열 수 없습니다. 해당 파일이나 디렉터리가 없습니다. 그 data.frame처럼 찾을 수 없습니다 .. 나는 많은 다른 것들을 시도했습니다 ... –

+0

미안 그것은 도움이되지 못했습니다. 필자는 파일을 덮어 쓰지 않아 테스트 할 수 없었습니다. 루프를 인쇄물과 함께 돌려 보냈습니다. 하지만 그것은 작업 디렉토리 디렉토리 문제와 같을 것입니다. 아마도 setwd ("your/directory/here")' – sconfluentus