PostgreSQL 8.4 में मौजूदा * .sql फ़ाइलों को आयात करने के लिए कैसे?


105

मैं PostgreSQL 8.4 का उपयोग कर रहा हूं, और मेरे पास डेटाबेस में आयात करने के लिए कुछ * .sql फाइलें हैं। ऐसा मैं किस प्रकार करूं?

जवाबों:


142

कमांड लाइन से:

psql -f 1.sql
psql -f 2.sql

से psqlशीघ्र:

\i 1.sql
\i 2.sql

ध्यान दें कि आपको फ़ाइलों को एक विशिष्ट क्रम में आयात करने की आवश्यकता हो सकती है (उदाहरण के लिए: डेटा हेरफेर से पहले डेटा परिभाषा)। यदि आपको bashशेल (GNU / Linux, Mac OS X, Cygwin) मिल गया है और फाइलें वर्णानुक्रम में आयात की जा सकती हैं , तो आप इस कमांड का उपयोग कर सकते हैं:

for f in *.sql ; do psql -f $f ; done

यहाँ psqlआवेदन का प्रलेखन (धन्यवाद, फ्रैंक): http://www.postgresql.org/docs/current/static/app-psql.html


@moon शायद आपके पास SQL ​​फ़ाइलों तक पहुँच अधिकार नहीं है? आप किस ऑपरेटिंग सिस्टम पर हैं?
बोलो

@moon यह आपके PostgreSQL उपयोगकर्ता (उपयोगकर्ता-पास जोड़ी PostgreSQL में संग्रहीत है) के साथ जुड़ा पासवर्ड है।
बोलो

8
@ मैं आपको सुझाव देता हूं कि आप अपनी समस्या को तीन चरणों में विभाजित करें: 1) सुनिश्चित करें कि आप भाग सकते हैं psql। : 2) सुनिश्चित करें कि आपके उपयोगकर्ता इस तरह के रूप में आवश्यक लिखने के विशेषाधिकार, है CREATE, INSERT, UPDATE, आदि 3) एसक्यूएल फ़ाइलें आयात। जहां तक ​​मैं समझता हूं, आप अभी स्टेज 1 पर हैं।
बोलो

@ बेलो: क्या आप उत्तर में तीन चरण डालेंगे?
एह से

@ बोलो, जैसा कि आपने उल्लेख किया मैं अब तीसरे चरण में हूं। लेकिन मैं अपने स्थानीय मशीन से .sql फ़ाइल कैसे आयात कर सकता हूं। मैंने कोशिश की \ i [विस्तार के साथ पूर्ण पथ] लेकिन मुझे त्रुटि संदेश मिलता है। ऐसी कोई फ़ाइल या निर्देशिका नहीं। क्या आप एक उदाहरण दे सकते हैं।

75

कमांड लाइन में पहले उस डायरेक्टरी तक पहुँचें जहाँ psql मौजूद है फिर कमांड्स इस तरह लिखें:

psql [database name] [username]

और फिर एंटर दबाएं psql पासवर्ड पूछता है यूजर को पासवर्ड दें:

फिर लिखें

> \i [full path and file name with extension]

उसके बाद प्रविष्ट प्रविष्टि प्रविष्ट करें।


मैं भी इस का उपयोग करें। और यह काम करता है। लेकिन, मैं आपूर्ति किए गए SQL कथनों को बदलता हूं। पहले के मौजूदा * .sql में किसी भी पात्र का उपयोग नहीं किया गया था; एक पंक्ति की समाप्ति के रूप में। और मुझे भी जीओ हटाना होगा। क्या आप सिनिकल लिपि को नहीं मानते हैं?
12:02 बजे स्वदेव

मैंने विस्तार के साथ \ i [पूर्ण पथ का उपयोग करने का प्रयास किया] लेकिन मुझे त्रुटि संदेश मिल गया है। ऐसी कोई फ़ाइल या निर्देशिका नहीं है। क्या आप कृपया एक उदाहरण अपलोड कर सकते हैं। धन्यवाद।

अगर \ i कोई फ़ाइल नहीं कहता है, तो उसे उस स्थिति में कोई फ़ाइल नहीं मिली। निरपेक्ष URL देना सबसे अच्छा है। मेरे लिए विंडोज पर, इस कमांडलाइन ने काम किया: \ i /tmp/robert/test.sql बेशक आपके पास उस फ़ाइल में मान्य SQL कमांड होना चाहिए।
शेवी

36

खैर, सबसे छोटा तरीका, जिसके बारे में मुझे पता है:

psql -U {user_name} -d {database_name} -f {file_path} -h {host_name}

database_name: आपको किस डेटाबेस में अपना फ़ाइल डेटा डालना चाहिए।

file_path: उस फ़ाइल का पूर्ण पथ, जिसके माध्यम से आप आयात करना चाहते हैं।

host_name: होस्ट का नाम। विकास के उद्देश्यों के लिए, यह ज्यादातर है localhost

कंसोल में इस कमांड को दर्ज करने पर, आपको अपना पासवर्ड दर्ज करने के लिए कहा जाएगा।


25

"/" और "\" से सावधान रहें। विंडोज पर भी कमांड फॉर्म में होनी चाहिए:

\i c:/1.sql

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