Writing and Updating DB2 tables with r

自作多情 提交于 2019-12-14 04:18:19

问题


I can't figure out how to update an existing DB2 database in R or update a single value in it.

I can't find much information on this topic online other than very general information, but no specific examples.

        library(RJDBC)

        teachersalaries=data.frame(name=c("bob"), earnings=c(100))




        dbSendUpdate(conn, "UPDATE test1 salary",teachersalaries[1,2])

AND

       teachersalaries=data.frame(name=c("bob",'sally'), earnings=c(100,200))




        dbSendUpdate(conn, "INSERT INTO test1 salary", teachersalaries[which(teachersalaries$earnings>200,] )

回答1:


Have you tried passing a regular SQL statement like you would in other languages?

dbSendUpdate(conn, "UPDATE test1 set salary=? where id=?", teachersalary, teacherid)

or

dbSendUpdate(conn,"INSERT INTO test1 VALUES (?,?)",teacherid,teachersalary)

Basically you specify the regular SQL DML statement using parameter markers (those question marks) and provide a list of values as comma-separated parameters.




回答2:


Try this, it worked for me well.

dbSendUpdate(conn,"INSERT INTO test1 VALUES (?,?)",teacherid,teachersalary)

You just need to pass a regular SQL piece in the same way you do in any programing langs. Try it out.




回答3:


To update multiple rows at the same time, I have built the following function.

I have tested it with batches of up to 10,000 rows and it works perfectly.

# Libraries
library(RJDBC)
library(dplyr)    

# Function upload data into database
db_write_table <- function(conn,table,df){
  # Format data to write
  batch <- apply(df,1,FUN = function(x) paste0("'",trimws(x),"'", collapse = ",")) %>%
  paste0("(",.,")",collapse = ",\n")

  #Build query
  query <- paste("INSERT INTO", table ,"VALUES", batch)

  # Send update
  dbSendUpdate(conn, query)
}

# Push data
db_write_table(conn,"schema.mytable",mydataframe) 

Thanks to the other authors.



来源:https://stackoverflow.com/questions/35324001/writing-and-updating-db2-tables-with-r

标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!