उपयोग करने के लिए अपनी परियोजनाओं में से एक के लिए मेरे आर कार्यप्रवाह के भाग के रूप आर के माध्यम से किसी अन्य कंप्यूटर से एक SSH सुरंग बनाने, मैं एक PostgreSQL एक रिमोट सर्वर पर स्थित तालिका से डेटा में लोड।PostgreSQL तालिका
मेरा कोड इस तरह दिखता है (अनामित प्रमाण पत्र)।
मैं पहली बार टर्मिनल में दूरस्थ सर्वर के लिए एक ssh कनेक्शन खोलें।
ssh -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")
यह दृष्टिकोण ठीक काम करता है में postgres डेटाबेस से कनेक्ट है, और मैं कोई समस्या नहीं के साथ डेटा डाउनलोड करने के लिए कर रहा हूँ।
हालांकि, मैं पहले कदम करना चाहता हूं - यानी, टर्मिनल की बजाय आर में एसएसएच कनेक्शन बनाना। त्रुटि के साथ, ऐसा करने का मेरा प्रयास यहां दिया गया है।
# 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 डेटा डाउनलोड) करना चाहते हैं।
'system2 (" ssh "का उपयोग कर सकते हैं, ग (के रूप में" - L8080: स्थानीय होस्ट: 80 "," एन "," टी ", "अन्यहोस्ट"), प्रतीक्षा = गलत) लिनक्स पर मेरे लिए काम किया। विंडोज़ पर काम नहीं करता है, हालांकि, 'फोर्क' की कमी के कारण, इसलिए आपको पृष्ठभूमि में कुछ चाहिए (जैसे 'समांतर' या [भविष्य '] (https://github.com/HenrikBengtsson/future) एक और आर सत्र चलाने के लिए)। इसे रोकना 'उपकरण :: पस्किल' के साथ काम कर सकता है, परीक्षण नहीं किया है। – r2evans
@ r2evans मेरे लिए काम किया, धन्यवाद। – Andy