सबसे पहले, नहीं करें मिक्स psql
मेटा-कमांड और SQL
आदेश। ये कमांड के अलग सेट हैं। उन्हें संयोजित करने के लिए तरकीबें हैं (psql मेटा-कमांड का उपयोग करके \o
और \\
और पाइपिंग स्ट्रिंग्स को psql शेल में), लेकिन यह जल्दी भ्रमित हो जाता है।
- अपनी फ़ाइलों में केवल SQL कमांड शामिल करें।
CREATE DATABASE
. शामिल न करें एसक्यूएल फाइलों में बयान। डीबी अलग से बनाएं, आपके पास एकाधिक है फ़ाइलें जिन्हें आप उसी टेम्पलेट डीबी में निष्पादित करना चाहते हैं।
मानते हैं आप OS उपयोगकर्ता के रूप में काम कर रहे हैं postgres
और DB भूमिका का उपयोग करें postgres
के रूप में (डिफ़ॉल्ट) सुपरयुसर को पोस्टग्रेज करता है, सभी डेटाबेस डिफ़ॉल्ट पोर्ट 5432 पर एक ही डीबी क्लस्टर में होते हैं और भूमिका postgres
होती है IDENT
. के कारण पासवर्ड रहित पहुंच है pg_hba.conf
. में सेटिंग - एक डिफ़ॉल्ट सेटअप।
psql postgres -c "CREATE DATABASE mytemplate1 WITH ENCODING 'UTF8'
TEMPLATE template0"
मैंने नए टेम्पलेट डेटाबेस को डिफ़ॉल्ट सिस्टम टेम्पलेट डेटाबेस template0
. पर आधारित किया है . यहाँ मैनुअल में मूल बातें।
आपके प्रश्न
<ब्लॉककोट>कैसे (...) फ़ाइल से pgsql cmds का एक सेट चलाएं
कोशिश करें:
psql mytemplate1 -f file
निर्देशिका में फ़ाइलों के बैच के लिए उदाहरण स्क्रिप्ट फ़ाइल:
#! /bin/sh
for file in /path/to/files/*; do
psql mytemplate1 -f "$file"
done
कमांड विकल्प -f
psql
. बनाता है फ़ाइल में SQL कमांड निष्पादित करें।
कमांड लाइन पर मौजूदा टेम्पलेट के आधार पर डेटाबेस कैसे बनाएं
psql -c 'CREATE DATABASE my_db TEMPLATE mytemplate1'
कमांड विकल्प -c
psql
. बनाता है एकल SQL कमांड स्ट्रिंग निष्पादित करें। ;
. द्वारा समाप्त कई कमांड हो सकते हैं - एक . में क्रियान्वित किया जाएगा लेन-देन और केवल अंतिम कमांड का परिणाम लौटा।
मैनुअल में psql कमांड विकल्पों के बारे में पढ़ें।
यदि आप कनेक्ट करने के लिए डेटाबेस प्रदान नहीं करते हैं, तो psql
"postgres" नाम के डिफ़ॉल्ट रखरखाव डेटाबेस से कनेक्ट होगा। दूसरे उत्तर में यह अप्रासंगिक है कि हम किस डेटाबेस से जुड़ते हैं।