Как назначить имя переменной параметру «SET» в запросе на обновление dbSendQuery () в R - PullRequest
0 голосов
/ 16 января 2019

Я запутался в динамическом обновлении столбцов таблицы. У меня есть фрейм данных, который содержит информацию о роли людей в школе.

roles_sam <- data.frame(character(),character(),character(),character(),stringsAsFactors = FALSE)
names(roles_sam) <- c("Student","Staff","HOD","Principal")

Точно так же у меня есть другой фрейм данных, который содержит дату начала ролей.

roles_start <- data.frame(character(),character(),character(),character(),stringsAsFactors = FALSE)
names(roles_start) <- c("Student_Start","Staff_Start","HOD_Start","Principal_Start")

Если роль выбрана как "HOD" , тогда "HOD_Start" следует обновить с указанным значением. Аналогично, если роль выбрана как «Персонал» , то «Staff_Start» должен быть обновлен в базе данных.

Код, который я пробовал:

a <- "HOD"
sd <- "16/01/2019"    
counter <- ncol(roles_start)
    for(i in 1:counter){
      if(names(roles_sam)[i] == a){
        role_start_date <- roles_start[i]
      }
    }
    print(role_start_date)

Этот код соответствует и возвращает правильную роль role_start_date для выбранной роли. Но я не уверен, как использовать dbSendQuery ()

dbSendQuery(con, paste0("UPDATE table_name SET role_start_date=\'",sd,"\' ") ) 

Это правильный путь? Кто-нибудь может мне с этим помочь? Заранее спасибо ...

1 Ответ

0 голосов
/ 16 января 2019

Вы должны использовать команду INSERT с функцией dbSendUpdate.

for(i in 1:iter)){
  dbSendUpdate(jdbcConnection, "INSERT INTO TABLE NAME  VALUES(?,?,?)", YOUR_DF[i, 1], YOUR_DF[i,2], YOUR_DF[i,3]
}

Это один из способов вставки новых значений в существующую таблицу. В приведенном мною примере у нас есть таблица с 3 столбцами, и мы заполняем ее строками нашего фрейма данных с именем YOUR_DF.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...