Sumber beberapa file sekaligus dengan psql

27

Saya ingin menjalankan beberapa skrip sql secara berurutan dengan psqlsebagai satu transaksi untuk mengatur skema database saya. Apa cara terbaik untuk melakukan ini? Di masa lalu saya tahu saya memiliki skrip master yang saya jalankan psqlmelawan yang menyertakan file lain namun saya tidak ingat sintaksis skrip ini.

xenoterracide
sumber

Jawaban:

32

Script Anda dapat terlihat seperti ini:

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

Atau Anda dapat melakukan sesuatu seperti ini:

cat file1.sql file2.sql | psql -1 -f -
Peter Eisentraut
sumber
1
Memahami pipa di shell membantu saya mendapatkan perintah terakhir.
ma11hew28
Contoh Anda dengan BEGIN; MELAKUKAN; tidak berfungsi, Anda memerlukan semi-kolom di akhir setiap \ibaris:
nichochar
0

Saya melakukannya menggunakan find di unix / linux dengan path ke file sql past dengan parameter rep_sql dengan instruksi "read":

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

Dikatakan: temukan tidak mengikuti file tautan apa pun nama dengan ext sebagai «.sql» dan jalankan di direktori file psql bekerja dengan mabase dan jalankan file yang ditemukan.

Deun
sumber