แหล่งที่มาหลายไฟล์พร้อมกันด้วย psql


27

ฉันต้องการรันสคริปต์ sql หลาย ๆ ตัวตามลำดับโดยpsqlเป็นธุรกรรมเดียวเพื่อตั้งค่าสคีมาฐานข้อมูลของฉัน วิธีที่ดีที่สุดในการทำเช่นนี้คืออะไร? ในอดีตฉันรู้ว่าฉันมีสคริปต์หลักที่ฉันpsqlพบซึ่งรวมถึงไฟล์อื่น ๆ ด้วย แต่ฉันไม่จำไวยากรณ์ของสคริปต์นี้

คำตอบ:


32

สคริปต์ของคุณอาจมีลักษณะเช่นนี้:

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

หรือคุณสามารถทำสิ่งนี้:

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

1
การทำความเข้าใจท่อในเปลือกช่วยให้ฉันได้รับคำสั่งสุดท้าย
ma11hew28

ตัวอย่างของคุณกับ BEGIN; COMMIT; ไม่ทำงานคุณต้องมีคอลัมน์กึ่งท้าย\iบรรทัดแต่ละบรรทัด:
nichochar

0

ฉันได้ใช้ find ใน unix / linux กับพา ธ ไปยังไฟล์ sql ที่ผ่านมาพร้อมกับพารามิเตอร์ rep_sql พร้อมคำสั่ง "read":

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

มันบอกว่า: ค้นหาไม่ตามลิงก์ไฟล์ไม่ว่าชื่อ ext เป็น« .sql »และดำเนินการในไดเรกทอรีของไฟล์ psql ที่ทำงานกับ mabase และรันไฟล์ที่พบ

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.