कमांड लाइन से PostgreSQL क्वेरी चलाएँ


278

मैंने एक तालिका में एक डेटा डाला .... मैं अब पूरी तालिका को पंक्तियों और स्तंभों और डेटा के साथ देखना चाहता हूं। मैं इसे कमांड के माध्यम से कैसे प्रदर्शित कर सकता हूं?

जवाबों:


475

psql -U username -d mydatabase -c 'SELECT * FROM mytable'

यदि आप कमांड लाइन टूल का उपयोग करने से अपरिचित और अपरिचित नए हैं, psqlतो कुछ भ्रामक व्यवहार हैं जिनके बारे में आपको पता होना चाहिए कि आपने एक इंटरैक्टिव सत्र में प्रवेश किया है।

उदाहरण के लिए, एक संवादात्मक सत्र आरंभ करें:

psql -U username mydatabase 
mydatabase=#

इस बिंदु पर आप सीधे एक क्वेरी दर्ज कर सकते हैं लेकिन आपको अर्धविराम के साथ क्वेरी को समाप्त करना याद रखना चाहिए;

उदाहरण के लिए:

mydatabase=# SELECT * FROM mytable;

यदि आप अर्धविराम को भूल जाते हैं तो जब आप एंट्री मारते हैं तो आपको अपनी रिटर्न लाइन पर कुछ नहीं मिलेगा क्योंकि psqlयह माना जाएगा कि आपने अपनी क्वेरी दर्ज नहीं की है। इससे सभी तरह के भ्रम पैदा हो सकते हैं। उदाहरण के लिए, यदि आप उसी क्वेरी को फिर से दर्ज करते हैं तो आपके पास सबसे अधिक संभावना सिंटैक्स त्रुटि होगी।

प्रयोग के रूप में, psql प्रांप्ट पर कोई भी गार्बल टाइप करने का प्रयास करें, फिर एंटर दबाएं। psqlचुपचाप आपको एक नई लाइन प्रदान करेगा। यदि आप उस नई लाइन पर अर्धविराम दर्ज करते हैं और फिर हिट दर्ज करते हैं, तो आपको ERROR प्राप्त होगा:

mydatabase=# asdfs 
mydatabase=# ;  
ERROR:  syntax error at or near "asdfs"
LINE 1: asdfs
    ^

अंगूठे का नियम है: यदि आपको कोई प्रतिक्रिया नहीं मिली, psqlलेकिन आप कम से कम सोने की उम्मीद कर रहे थे, तो आप अर्धविराम को भूल गए;


4
चूँकि कम से कम 7.2 (जो कि अब तक जाँचने की जहमत उठा रहा है, यह पहले भी हो सकता है), psql में विकल्प --single-line(या -s) है जो हर कमांड को अर्धविराम जोड़ने की आवश्यकता के बिना तत्काल बनाता है।
गॉर्डन

3
मैंने एक घंटे डिबगिंग में बिताया और समस्या गायब अर्धविराम थी। आपको धन्यवाद
डावसन बी

106
SELECT * FROM my_table;

my_tableआपकी तालिका का नाम कहां है

संपादित करें:

psql -c "SELECT * FROM my_table"

या सिर्फ psqlऔर फिर अपने प्रश्नों को टाइप करें।


7
psql -U username -c your_database "SELECT * FROM my_table"
DrColossos

3
जैसा कि कहा गया है, आपको अर्धविराम के साथ अपनी आज्ञा समाप्त करनी चाहिए ; यदि आप एक विंडोज़ सिस्टम पर हैं, तो मूल रूप से कंसोल प्रॉम्प्ट खोलने के बाद , मूल रूप से विंडोज़ उपयोगकर्ताओं के लिए नोटस देखें cmd.exe /c chcp 1252
D_Guidi

2
भविष्य के उपयोगकर्ताओं के लिए, अपने डेटाबेस के नाम से पहले -d और क्वेरी से पहले -c जोड़ना सुनिश्चित करें: psql -U उपयोगकर्ता नाम -d mydatabase -c 'SELECT * FROM mytable'
jmhead

2
मेरे लिए काम नहीं किया। मैंने कियाpsql: FATAL: database "SELECT * FROM tb_name" does not exist
जसविंदर

जैसा कि @DrColossos ने संकेत दिया है, ऐसा लगता है कि कमांड के चारों ओर डबल-कोट्स विंडोज़ क्ली / बैच वातावरण से कम से कम आवश्यक हैं।
jewbix.cube

43

यदि आपका DB पासवर्ड संरक्षित है, तो समाधान होगा:

PGPASSWORD=password  psql -U username -d dbname -c "select * from my_table"

3
कभी नहीं पता है कि इस तरह से पासवर्ड प्रदान कर सकते हैं। परीक्षण करते समय यह वास्तव में आसान है। धन्यवाद
zhihong

21

अपने अनुप्रयोगों (मैक) से "SQL शैल (psql)" खोलें।

यहां छवि विवरण दर्ज करें

डिफ़ॉल्ट सेटिंग्स के लिए एंटर पर क्लिक करें। संकेत दिए जाने पर पासवर्ड डालें।

यहां छवि विवरण दर्ज करें

*) \?मदद के लिए टाइप करें

*) \conninfoयह देखने के लिए टाइप करें कि आप किस उपयोगकर्ता से जुड़े हुए हैं।

*) \lडेटाबेस की सूची देखने के लिए टाइप करें।

यहां छवि विवरण दर्ज करें

*) \c <Name of DB>उदाहरण के लिए, डेटाबेस से कनेक्ट करें\c GeneDB1

यहां छवि विवरण दर्ज करें

आपको नए DB के लिए महत्वपूर्ण त्वरित परिवर्तन देखना चाहिए, जैसे: यहां छवि विवरण दर्ज करें

*) अब जब आप किसी दिए गए DB में हैं, तो आप उस DB के लिए स्कीमें जानना चाहते हैं। इसके लिए सबसे अच्छा कमांड है \dn

यहां छवि विवरण दर्ज करें

अन्य कमांड जो काम भी करते हैं (लेकिन उतने अच्छे नहीं हैं) select schema_name from information_schema.schemata;और select nspname from pg_catalog.pg_namespace;:

यहां छवि विवरण दर्ज करें

-) अब आपके पास स्कीमा हैं, आप उन स्कीमों में तालिकाएँ जानना चाहते हैं। उसके लिए, आप dtकमांड का उपयोग कर सकते हैं । उदाहरण के लिए\dt "GeneSchema1".*

यहां छवि विवरण दर्ज करें

*) अब आप अपनी क्वेरी कर सकते हैं। उदाहरण के लिए:

यहां छवि विवरण दर्ज करें

*) यहाँ उपरोक्त DB, स्कीमा और तालिकाएँ pgAdmin की तरह दिखती हैं:

यहां छवि विवरण दर्ज करें


3
  1. एक कमांड प्रॉम्प्ट खोलें और उस निर्देशिका पर जाएं जहां Postgres स्थापित है। मेरे मामले में मेरा पोस्टग्रैज़ पथ "D: \ TOOLS \ Postgresql-9.4.1-3" है। इसके बाद Postgres.So कमांड प्रॉम्प्ट के बिन डायरेक्टरी में जाएँ: "D: \ TOOLS \ Postgresql-9.4.1-3" \ बिन> "
  2. अब मेरा लक्ष्य "UserId" मान का उपयोग करके उपयोगकर्ता तालिका से "UserName" का चयन करना है। डेटाबेस क्वेरी में " यू का चयन करें।" UserName "उपयोगकर्ताओं को u u।" UserId "= 1 " से।

पोस्टर्स के psql कमांड प्रॉम्प्ट के लिए उसी क्वेरी को नीचे लिखा गया है।

D: \ TOOLS \ Postgresql-9.4.1-3 \ bin> psql -U postgres -d DatabaseName -h localhost - t -c "users u। U"। \ "UserId \" = से उपयोगकर्ताओं से \ "UserName \" का चयन करें। 1;


3

मुझे @ जीआरएन उत्तर पर कोई संदेह नहीं है। लेकिन मुझे कभी-कभी कुछ समस्याओं का सामना करना पड़ता है जैसे कि स्तंभ का नाम पोस्टग्रैस्केल के किसी भी आरक्षित कीवर्ड के समान है जैसे कि इस मामले में प्राकृतिक समान है कमांड लाइन से चलाना मुश्किल है क्योंकि क्वेरी फ़ील्ड में "\ natural \" की आवश्यकता होगी। इसलिए मेरा दृष्टिकोण एसक्यूएल को अलग फाइल में लिखना है और कमांड लाइन से एसक्यूएल फाइल को चलाना है। इसका एक और फायदा भी है। यदि आपको एक बड़ी स्क्रिप्ट के लिए क्वेरी को बदलना है तो आपको स्क्रिप्ट फ़ाइल या कमांड को छूने की आवश्यकता नहीं है। केवल SQL फ़ाइल को इस तरह बदलें

psql -h localhost -d database -U postgres -p 5432 -a -q -f /path/to/the/file.sql

3

मैंने यह भी देखा कि क्वेरी

चुनें * टैबलेन से;

psql कमांड प्रॉम्प्ट पर एक त्रुटि देता है और

"टैबलेन" से * का चयन करें;

ठीक चलता है, वास्तव में अजीब है, इसलिए दोहरे उद्धरण मत भूलना। मुझे हमेशा डेटाबेस पसंद था :-(


-8

विशेष प्रकार के बयानों के लिए आप उपयोग करने के लिए अधिक उपयुक्त पा सकते हैं Azure Data Studio- बाकी सभी चीजों के लिए यह अंतर्निहित कमांड लाइन के साथ आता है। स्टूडियो का उपयोग करके आप टाइपिंग स्टेटमेंट पा सकते हैं और आउटपुट को अधिक आरामदायक पढ़ सकते हैं।

नीचे दिए गए चरणों का पालन करें:

  1. एज़्योर डेटा स्टूडियो स्थापित करें - एक क्रॉस-प्लेटफ़ॉर्म आधुनिक संपादक है जो डेटा विकास पर केंद्रित है; यह खुला स्रोत और एक्स्टेंसिबल है - दो चीजें जो पोस्टग्रेक्यूएल खुद पर आधारित हैं;
  2. PostgreSQL एक्सटेंशन स्थापित करें
  3. अपने स्थानीय या दूरस्थ सर्वर से कनेक्ट करें:

    यहां छवि विवरण दर्ज करें

  4. केवल SQL लिखने और निष्पादित करने पर ध्यान दें:

    यहां छवि विवरण दर्ज करें

रहे हैं कई , कनेक्शन बचत सर्वर समूह बनाने के रूप में अच्छा सुविधाओं और यहां तक कि निर्मित टर्मिनल यदि आप और अधिक आरामदायक के माध्यम से कुछ काम कर रही हैं psql

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