Apakah ada GUI admin Postgres yang dapat mengeksekusi file master yang berisi beberapa file sql

8

Saya sedang mengembangkan skrip yang sangat panjang. Saya ingin memecah skrip menjadi skrip yang lebih kecil dan lebih mudah dikelola dan memasukkan setiap file sql ke file master, kemudian jalankan file master.

contoh: master.sql

konten (saya tidak tahu sintaks yang digunakan):

file1.sql
file2.sql
file3.sql

Saya telah menemukan beberapa tutorial tentang penggunaan psql -fdalam command-line dan \iuntuk memasukkan file-file ini, tetapi preferensi di sini adalah untuk menghindari terminal dan menggunakan GUI untuk mengelola database saya dan menjalankan master.sqlskrip.

Apakah ini mungkin di GUI admin postgres? Agaknya itu tidak ada di pgAdmin.

jbits
sumber
Anda dapat mengedit file SQL di editor apa pun (ada opsi yang jauh lebih baik daripada pgAdmin) dan kemudian hanya menjalankan satu perintah dalam psql (katakanlah psql -f master.sql).
dezso
OK, maka saya akan jelas: Anda mungkin tidak dapat melakukannya di pgAdmin. Lagi pula, saya tidak bisa benar-benar melihat mengapa ini menjadi masalah (saya mungkin terlalu terbiasa dengan batasan ini).
dezso
Terima kasih atas komentarnya. Dan Anda akan dapat melihat bahwa itu adalah masalah tanpa solusi jika Anda mencoba melakukan apa yang saya inginkan di pgAdmin. Ini mungkin merupakan batasan (WADU) dari pgAdmin, seperti yang Anda katakan, jadi saya akan mengedit pertanyaan saya untuk membukanya untuk menanyakan APAPUN postgres GUI yang akan melakukan ini.
jbits
1
SQL Workbench / J dapat melakukannya: sql-workbench.net/manual/wb-commands.html#command-wbinclude
a_horse_with_no_name
Terima kasih @a_horse_with_no_name. Saya perhatikan dalam URL yang dirujuk bahwa: "Jika skrip SQL yang disertakan berisi kueri SELECT, hasil kueri tersebut tidak akan ditampilkan dalam GUI". Skrip saya memiliki banyak pernyataan pilih. Untuk mengkonfirmasi pelepasan tanggung jawab hukum ini, saya menguji produk ini menggunakan perintah WbInclude pada skrip yang sangat sederhana yang berisi pilih dan mengonfirmasi itu tidak menampilkan hasilnya. Kenapa ya? Lagi pula, selain itu, produk ini pasti berfungsi memanggil skrip lain dalam skrip.
jbits

Jawaban:

2

Sebuah psqlnaskah

Skrip psql dapat mengindeks beberapa file, mari kita asumsikan 01_mydb.psql, ada di direktori kerja saat ini, dan Anda memiliki direktori 01yang memiliki file 01_schema.sqldan 02_types.sql.

01_mydb.psql mungkin terlihat seperti ini.

\i 01/01_schema.sql
\i 01/02_types.sql

Atau bagaimanapun Anda ingin struktur itu. Jika segalanya menjadi lebih kompleks dan perlu lebih banyak pesanan, tambahkan lebih banyak subdirektori

\i 01/10_tables/01_foo.sql
\i 01/10_tables/02_bar.sql

Maka Anda hanya akan baik ..

  1. Tambahkan file indeks 01, kira-kira seperti./01/10_tables.psql
  2. Atau, tambahkan saja semuanya 01_mydb.sql

Saya akan menunjukkan metode kedua menggunakan find,

Menggunakan finduntuk menghasilkan skrip master-load.

Ayo maju dan buat struktur itu.

01/
├── 01_schema.psql
├── 02_types.psql
└── 10_tables
    ├── 01_foo.psql
    └── 02_bar.psql

Berikut adalah perintah yang kami gunakan untuk membuatnya.,

mkdir 01
touch 01/01_schema.sql
touch 01/02_types.sql
mkdir 01/10_tables
touch 01/10_tables/01_foo.sql
touch 01/10_tables/02_bar.sql

Sekarang Anda dapat menggunakan finduntuk menghasilkan skrip memuat

find ./01/ -type f -printf '\\i %p\n' | sort | tee master.psql
\i ./01/01_schema.sql
\i ./01/02_types.sql
\i ./01/10_tables/01_foo.sql
\i ./01/10_tables/02_bar.sql

Sekarang jalankan saja master.psql;

psql -d database -f master.psql
Evan Carroll
sumber