У меня есть двенадцать соединений базы данных 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"
Вы не можете передать текстовое представление объекта соединения в функции базы данных. Ваш вызов аналогичен 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 ..."))
items <- list(mydb1,mydb2,mydb3,mydb4,mydb5,mydb6,mydb7,mydb8,mydb9,mydb10,mydb11,mydb12) result1 <- dbSendQuery(items[1], "SELECT...
I get Ошибка в (функция (классы, fdef, mtable): невозможно найти унаследованный метод для функции 'dbSendQuery' для подписи '' список ', "символ" ". Есть ли что-то в вашем последнем утверждении, что вы делаете, что я" м отсутствует?result1 <- ...
команда.