2015-10-30 3 views
0

Кто-нибудь знает, как я могу использовать RMySQL (или другую библиотеку), чтобы обновить строку в таблице, вместо того, чтобы вытащить полный стол и оттолкнуть его обратно? Я не хочу читать такую ​​огромную таблицу в памяти, чтобы обновить одну строку.Строка обновления RMySQL, а не полная таблица

То, что я пытаюсь сделать, это вытащить строку, изменить некоторые значения внутри R и нажать один и тот же объект строки обратно в таблицу.

Однако dbWriteTable, кажется, заменяет всю таблицу, а не только указанную строку.

ответ

3

Самый простой способ - построить строку внутри R, содержащую соответствующий оператор SQL Update, и использовать dbSendQuery для перевода данных обратно в таблицу.

0

Использование sqldf пакет:

library(sqldf) 
table_name = data.frame(a = 1:10, b = 4) 
# Open connection 
sqldf() 
fn$sqldf("update table_name set b=1") 
ans = sqldf("select * from main.table_name") 
# Close connection 
sqldf() 
print(table_name) 
+0

Я не очень понимаю, что вы сделали здесь. Можете ли вы сломать его? Каким объектом является fn? – Ratsock

+0

В общем случае мы должны использовать префикс fn $ для вызова функциональности интерполяции. Т.е. мы можем передать R-объекты или переменные в запрос sql. 'fn $ sqldf (" update table_name set b = $ var ")' Где var = 1 в приведенном выше коде –

Смежные вопросы