Создайте туннель SSH к другому компьютеру через R для доступа к таблице postgreSQL
Как часть моего рабочего процесса R для одного из моих проектов, я загружаю данные из таблицы postgreSQL, расположенной на удаленном сервере.
Мой код выглядит так (анонимные учетные данные).
Сначала я открываю соединение SSH с удаленным серверомв терминале.
ssh -p Port -L LocalPort:IP:RemotePort servername"
Затем я подключаюсь к базе данных postgres в R.
# Load the RPostgreSQL package
library("RPostgreSQL")
# Create a connection
Driver <- dbDriver("PostgreSQL") # Establish database driver
Connection <- dbConnect(Driver, dbname = "DBName", host = "localhost", port = LocalPort, user = "User")
# Download the data
Data<-dbGetQuery(Connection,"SELECT * FROM remote_postgres_table")
Этот подход работает отлично, и я могу загрузить данные без проблем.
Однако я бы хотел сделать первый шаг - создать соединение ssh - в R, а не в терминале. Вот моя попытка сделать это с сопутствующей ошибкой.
# Open the ssh connection in R
system("ssh -T -p Port -L LocalPort:IP:RemotePort servername")
# Load the RPostgreSQL package
library("RPostgreSQL")
# Create a connection
Driver <- dbDriver("PostgreSQL") # Establish database driver
Connection <- dbConnect(Driver, dbname = "DBName", host = "localhost", port = LocalPort, user = "User")
# Download the data
Data<-dbGetQuery(Connection,"SELECT * FROM remote_postgres_table")
Error in postgresqlExecStatement(conn, statement, ...) :
RS-DBI driver: (could not Retrieve the result : server closed the connection unexpectedly
This probably means the server terminated abnormally
before or while processing the request.
Чтобы прояснить мой вопрос, я хотел бы выполнить весь этот рабочий процесс (установить соединение, загрузить данные postgreSQL) полностью в R без каких-либо шагов в терминале.