परिणाम की प्रतीक्षा किए बिना psql से क्वेरी कैसे निष्पादित करें?


9

मेरी क्वेरी (मौजूदा तालिका से एक नई तालिका बनाने के लिए) बहुत लंबा समय लेती है। इसलिए मैंने अपने कार्यालय में एक दूरस्थ डेटाबेस स्थापित किया है - वहां अधिक रैम।

मैं psql के साथ हमेशा की तरह घर से अपने डेटाबेस से जुड़ सकता हूं।

प्रतिक्रिया के लिए प्रतीक्षा किए बिना टर्मिनल से अपनी क्वेरी को निष्पादित करने के लिए मैं दूरस्थ सर्वर को कैसे बता सकता हूं?

(पोस्टग्रैस्कल-9.2, लिनेक्स एनवायरमेंट)

संपादित करें: मैं अन्य समाधानों के लिए खुला हूं, psql का उपयोग करना आवश्यक नहीं है

जवाबों:


6

चूंकि आप कहते हैं कि आप अन्य समाधानों के लिए खुले हैं, इसलिए मैं टर्मिनल मल्टीप्लेक्सर्स जैसे कि स्क्रीन या tmux देखने की सलाह दे सकता हूं । मेरे विचार में tmux अपने अनोखे नाम (सर्च इंजन में प्रासंगिक हिट पाने में आसान) के कारण एक बेहतर विकल्प है।

अनिवार्य रूप से इस तरह का सॉफ्टवेयर आपको एक शेल से अलग करने की अनुमति देता है और बाद में सत्र को फिर से शुरू करता है।


1
क्या tmuxइस तरह से काम करता है : 'क्या मैं अपनी स्थानीय मशीन को बंद कर पाऊंगा, और रिमोट सर्वर पर क्वेरी अभी भी बंद हो जाएगी'?
dezso

हां, रिमोट मशीन पर सत्र चल रहा है - इंटरनेट कनेक्शन का एक पावर आउटेज या नुकसान एक गैर मुद्दा है (रिमोट कंट्रोल के संबंध में :)। ध्यान दें कि आपको टर्मिनल मल्टीप्लेक्सर (afaik) के भीतर से प्रक्रिया शुरू करने की आवश्यकता है।
c0dem4gnetic

क्या आप इस बारे में मार्गदर्शन प्रदान कर सकते हैं कि यह कैसे लागू किया जाता है? psqlग्राहक सॉफ्टवेयर है कि अपने स्थानीय मशीन पर चल रहा है, तो एक दूरस्थ मशीन एक postgres सर्वर चलाने के लिए संबंध tmuxबना रही sshहै? अगर ऐसा है तो मुझे दुख हुआ कि यह बिना EC2 के चल रहे Redshift उदाहरण के साथ काम नहीं करेगा।
मर्लिन

@ मर्लिन tmux रिमोट मशीन पर चलती है और शेल सेशन स्थापित करती है। यह इस से है कि आप अलग करते हैं और संलग्न करते हैं। जब स्थानीय रूप से psql चल रहा है तो आप इसे tmux सेशन में चला सकते हैं, लेकिन क्लाइंट कनेक्शन केवल तब तक रखा जाता है जब तक कि नेटवर्क की स्थिति सामान्य अनुमति सत्र के रूप में अनुमति देती है।
c0dem4gnetic 18

@ c0dem4gnetic मुझे लगता है कि psql को अभी भी रिमोट सर्वर पर स्थापित किया जाना चाहिए। ऐसा लगता है जैसे स्थानीय tmux -> EC2 + tmux + psql सत्र को जीवित रखने के लिए redshift / postbes db में लॉगिंग करता है।
मर्लिन

8

आप psqlपृष्ठभूमि को भेजने की कोशिश कर सकते हैं :

psql -f your_sql_file.sql &

या, स्थानीय DB से जुड़कर, आप dblinkदूरस्थ DB को क्वेरी भेजने के लिए उपयोग कर सकते हैं :

SELECT dblink_connect('your_connection_name', 'your_connection_string');
SELECT dblink_send_query('your_connection_name', 'your_query');

ध्यान दें कि dblink_send_queryएक समय में केवल एक ही क्वेरी भेज सकते हैं। इसलिए, यदि आप कई SQL स्टेटमेंट्स चलाना चाहते हैं, तो यह आपका समाधान नहीं है।

या, आप pg_agentदूरस्थ सर्वर पर नौकरी शुरू कर सकते हैं , जिसके लिए किसी मैनुअल हस्तक्षेप की आवश्यकता नहीं होती है, इसलिए आपके घर के बॉक्स की स्थिति का आपकी नौकरी चलाने पर कोई प्रभाव नहीं पड़ता है। एक ही cron(या इससे भी बेहतर, at- धन्यवाद, इरविन) अपनी स्क्रिप्ट को निष्पादित करने वाली नौकरी स्थापित करके प्राप्त किया जा सकता है ।

इसके अतिरिक्त, यदि आपके पास एक लंबी चलने वाली नौकरी है जिसे आप मैन्युअल रूप से शुरू करते हैं, तो आप screenसर्वर पर एक सत्र शुरू कर सकते हैं और फ़ाइल को वहां से चला सकते हैं। इस स्थिति में, आप लॉग ऑफ कर सकते हैं और घर जा सकते हैं, और स्क्रिप्ट चालू रहेगी।


pg_agent पर्याप्त होनहार लग रहा है। मैं इसका प्रयास करूंगा और परिणाम अपडेट करूंगा।
2052 बजे user528025

3
या, एक बार के ऑपरेशन के लिए, atकमांड आपको क्रोन से बेहतर सेवा दे सकता है।
एरविन ब्रांडस्टेट्टर
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.