ฉันต้องการรันสคริปต์ sql หลาย ๆ ตัวตามลำดับโดยpsql
เป็นธุรกรรมเดียวเพื่อตั้งค่าสคีมาฐานข้อมูลของฉัน วิธีที่ดีที่สุดในการทำเช่นนี้คืออะไร? ในอดีตฉันรู้ว่าฉันมีสคริปต์หลักที่ฉันpsql
พบซึ่งรวมถึงไฟล์อื่น ๆ ด้วย แต่ฉันไม่จำไวยากรณ์ของสคริปต์นี้
ฉันต้องการรันสคริปต์ sql หลาย ๆ ตัวตามลำดับโดยpsql
เป็นธุรกรรมเดียวเพื่อตั้งค่าสคีมาฐานข้อมูลของฉัน วิธีที่ดีที่สุดในการทำเช่นนี้คืออะไร? ในอดีตฉันรู้ว่าฉันมีสคริปต์หลักที่ฉันpsql
พบซึ่งรวมถึงไฟล์อื่น ๆ ด้วย แต่ฉันไม่จำไวยากรณ์ของสคริปต์นี้
คำตอบ:
สคริปต์ของคุณอาจมีลักษณะเช่นนี้:
BEGIN;
\i file1.sql
\i file2.sql
COMMIT;
หรือคุณสามารถทำสิ่งนี้:
cat file1.sql file2.sql | psql -1 -f -
\i
บรรทัดแต่ละบรรทัด:
ฉันได้ใช้ find ใน unix / linux กับพา ธ ไปยังไฟล์ sql ที่ผ่านมาพร้อมกับพารามิเตอร์ rep_sql พร้อมคำสั่ง "read":
find -P ${rep_sql} -type f -name *.sql -execdir psql -d "mabase" -f {} +
มันบอกว่า: ค้นหาไม่ตามลิงก์ไฟล์ไม่ว่าชื่อ ext เป็น« .sql »และดำเนินการในไดเรกทอรีของไฟล์ psql ที่ทำงานกับ mabase และรันไฟล์ที่พบ