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.

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.


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.


3

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

find sql/ -name *.sql -exec psql -U user -f {} \;

Mengharuskan Anda menggunakan "*.sql"daripada*.sql
Jeel Shah
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.