panggil banyak file Sql dalam satu file SQL di Postgres

11

Bagaimana memanggil beberapa file sql dalam satu file sql, di postgres

Misalnya saya punya aaa.sql, bbb.sql, ccc.sql.

Saya ingin menjalankan 3 file ini dari xxx.sql.

Adakah yang bisa menyarankan saya bagaimana melakukan ini.

Perjalanan
sumber

Jawaban:

12

Jika Anda menjalankan file-file ini melalui psqlAnda ingin \idirektif ("jalankan perintah dari file").

xxx.sql:

\i aaa.sql
\i bbb.sql
\i ccc.sql

Jika Anda melewati ini melalui beberapa program lain, Anda perlu menggabungkan file sendiri - Saya tidak percaya ada cara standar SQL untuk mengeksekusi file eksternal.

voretaq7
sumber
Terima kasih atas balasannya. Saya akan menguji dan mengonfirmasi apakah saya dapat mencapainya atau tidak
Trip
Sepertinya belum berfungsi. Tidak yakin apakah saya kehilangan sesuatu. Apakah saya perlu semi-kolon di akhir ??? -Tidak juga !!!
Perjalanan
1
Anda harus lebih spesifik daripada "tidak bekerja" - Saya yakin ini tidak berfungsi - Rujuk ke manual psql
voretaq7
Itu berhasil. Akhirnya :-) Masalah Thanku adalah - tidak dapat mengenali file dan O menentukan path relatif untuk file dan kerjanya Terima kasih sekali lagi
Trip
@ Trip Trip, jangan lupa untuk memberikan penghargaan voretaq atas jawabannya!
Richard T
4

Tidak persis apa yang Anda minta, tetapi akan melayani tujuan Anda: 1) Masukkan semua file skrip Anda ke dalam folder; dan 2) menggunakan skrip bash untuk beralih melalui file Anda dan menjalankan psql. Sebagai contoh:

SCRIPTS_DIR=/home/myproject/scripts
DATABASE_NAME=database_name

for file in $SCRIPTS_DIR/*.sql
    do sudo -u postgres psql $DATABASE_NAME -f $file
done

Ini sebenarnya sedikit lebih baik karena Anda tidak perlu mengetikkan nama file Anda.

mehmet
sumber
3

Pada bash shell kamu bisa melakukannya juga dengan yang sederhana find -exec

find sql/ -name *.sql -exec psql -U user -f {} \;
Panciz
sumber
Mengharuskan Anda menggunakan "*.sql"daripada*.sql
Jeel Shah