2015-02-27 4 views
0

Я получаю доступ к соединениям MySQL из R через RMySQL. Я нашел команду MySQL, с помощью которой, чтобы получить имя базы данных/SchemaR и RMySQL, как получить имя базы данных для соединения?

SELECT DATABASE(); 

Так я могу назвать это, чтобы получить его изнутри моих сценариев R через dbGetQuery().

Однако, я также обнаружил, что вызов summary(connection) автоматически получает базу данных, среди прочего.

> summary(connection) 
<MySQLConnection:(6746,0)> 
    User: root 
    Host: localhost 
    Dbname: my_database 
    Connection type: Localhost via UNIX socket 
    No resultSet available 

Из-за быстроты результата, я предполагаю, что в магазинах подключения, информации в R, но я не знаю, как получить доступ к его содержанию.

Я попытался проверить его среду и даже посмотреть в источник RMySQL, чтобы понять это, однако у меня недостаточно опыта ... пока.

Так как я могу получить Dbname как переменную (не напечатанную)? Спасибо и привет от Mx.

ответ

1

Хотя, я не совсем понимаю, почему вы хотите, чтобы имя базы данных в качестве переменной, вы можете захватить его следующим образом:

db_info <- capture.output(mysqlDescribeConnection(MySQLcon, verbose = T)) 

Обратите внимание на использование mysqlDescribeConnection(), а не summary.

имя_бд можно получить в качестве четвертого элемента выходного вектора:

db_info[4] 
[1] " Dbname: my_database " 

Если у вас действительно есть планы использовать его в качестве переменной, некоторая строка манипуляция будет необходимо.

db <- strsplit(db_info[4], ' ') 

final_dbname <- db[[1]][4] 
[1] "my_database" 
+0

Хотя не строгая необходимость, я хочу сделать это, потому что я хочу, сценарий для кэширования результатов запроса из MySQL, который занимает больше времени, каждый раз, это функция вида 'makeCacheQuery (Conn, script_or_file) 'и внутри я проверяю последний раз, когда база данных из' conn' была изменена. знак равно – Diego

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