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.

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 -

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.

Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.