Цикл по соединениям с базой данных

0

У меня есть двенадцать соединений базы данных MySQL, созданных с использованием:

mydb1 = dbConnect(MySQL(), user='user', password=password, dbname='db',host='domain')
mydb2...  
mydb3...  
...
mydb12...

У меня есть сценарий, где я хочу выполнить один и тот же запрос во всех 12 базах данных и пропустить их. Как успешно dbConnect объекты dbConnect в dbSendQuery?

items <- ls()[grep("mydb",ls())]
query <- dbSendQuery(items[1], "SELECT * FROM table") 

дает мне ошибку:

Ошибка в (function (classes, fdef, mtable): невозможно найти унаследованный метод для функции 'dbSendQuery для подписи' "character", "character"

Теги:

1 ответ

0
Лучший ответ

Вы не можете передать текстовое представление объекта соединения в функции базы данных. Ваш вызов аналогичен dbSendQuery("mydb1", "select * from table"), который, как я предполагаю, вы бы не ввели буквально.

В конечном счете вы хотите иметь дело со list соединений, которые вы можете создать вручную с помощью

conns <- list(mydb1, mydb2, ...)

но если это сложно или вы хотите быть более программным в этом, попробуйте

conns <- lapply(ls()[grep("mydb",ls())], get)

а потом

results <- lapply(conns, function(con) dbSendQuery(con, "select * from ..."))
  • 0
    Итак, после попытки этого items <- list(mydb1,mydb2,mydb3,mydb4,mydb5,mydb6,mydb7,mydb8,mydb9,mydb10,mydb11,mydb12) result1 <- dbSendQuery(items[1], "SELECT... I get Ошибка в (функция (классы, fdef, mtable): невозможно найти унаследованный метод для функции 'dbSendQuery' для подписи '' список ', "символ" ". Есть ли что-то в вашем последнем утверждении, что вы делаете, что я" м отсутствует?
  • 0
    Пожалуйста, прочитайте весь ответ, я никогда не предлагал ваш result1 <- ... команда.
Показать ещё 6 комментариев

Ещё вопросы

Сообщество Overcoder
Наверх
Меню