Psql के साथ एक बार में कई फ़ाइलों को स्रोत


27

मैं psqlअपने डेटाबेस स्कीमा को स्थापित करने के लिए एकल लेनदेन के रूप में क्रमिक रूप से कई sql स्क्रिप्ट निष्पादित करना चाहता हूं । इसे करने का बेहतरीन तरीका क्या है? अतीत में मुझे पता है कि मेरे पास एक मास्टर स्क्रिप्ट थी जिसके psqlखिलाफ मैं दौड़ गया था, जिसमें अन्य फाइलें शामिल थीं, हालांकि मुझे इस स्क्रिप्ट का सिंटैक्स याद नहीं है।

जवाबों:


32

आपकी स्क्रिप्ट इस तरह दिख सकती है:

BEGIN;
\i file1.sql
\i file2.sql
COMMIT;

या आप ऐसा कुछ कर सकते हैं:

cat file1.sql file2.sql | psql -1 -f -

1
खोल में पाइप को समझने से मुझे आखिरी कमांड प्राप्त करने में मदद मिली।
ma11hew28

बेगिन के साथ आपका उदाहरण; COMMIT; काम नहीं करता है, आपको प्रत्येक \iपंक्ति के अंत में अर्ध-स्तंभों की आवश्यकता है :
nichochar

0

मैंने इसे यूनिक्स / लाइनक्स में फाइल के साथ पास्ट के साथ फाइल sql पास्ट के साथ rep_sql पैरामीटर के साथ "फाइल" के साथ प्रयोग किया है:

find -P ${rep_sql} -type f -name *.sql -execdir psql -d "mabase" -f {} +

यह कहता है: लिंक फ़ाइलों का अनुसरण न करें, जो भी नाम के रूप में «.sql» के साथ जो भी नाम है, और फ़ाइल की निर्देशिका में निष्पादित करें psql mabase के साथ काम करना और पाया गया फ़ाइल निष्पादित करें।

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