2013-02-26 39 views
7

Làm cách nào để cập nhật dữ liệu trong một db postgresql qua R với dữ liệu mới?trong cơ sở dữ liệu postgresql qua r

Tôi đã thử

dbGetQuery(con,"UPDATE table SET column1=:1,column2=:2, column3=:3 
       where id=:4", data=Rdata[,c("column1", "column3", "column3","id")]) 

Tôi cũng đã cố gắng với dấu hai chấm thay thế bằng $ nhưng điều đó không làm việc, hoặc. Tôi tiếp tục nhận được:

Error in postgresqlExecStatement(conn, statement, ...) : 
unused argument(s) 
+0

Các bạn đã nhìn tài liệu để xem liệu trình giữ chỗ có được hỗ trợ không? Không phải mọi giao diện db từ R đều có. Tôi biết RSQLite, nhưng tôi khá chắc chắn RODBC không, và tôi không chắc chắn về RPostgreSQL. – joran

Trả lời

7

I figured it out sử dụng:

update <- function(i) { 
drv <- dbDriver("PostgreSQL") 
con <- dbConnect(drv, dbname="db_name", host="localhost", port="5432", user="chris", password="password") 
txt <- paste("UPDATE data SET column_one=",data$column_one[i],",column_two=",data$column_two[i]," where id=",data$id[i]) 
dbGetQuery(con, txt) 
dbDisconnect(con) 
} 


registerDoMC() 

foreach(i = 1:length(data$column_one), .inorder=FALSE,.packages="RPostgreSQL")%dopar%{ 
update(i) 
} 
1

Ít nhất RODBC có một chức năng cụ thể sqlUpdate:

sqlUpdate cập nhật các bảng, nơi các hàng đã tồn tại. khung dữ liệu dat nên chứa cột với những cái tên bản đồ để (một số) các cột trong bảng

Xem http://cran.r-project.org/web/packages/RODBC/RODBC.pdf

Các vấn đề liên quan