PostgreSQL
 sql >> Teknologi Basis Data >  >> RDS >> PostgreSQL

Skrip shell untuk menjalankan perintah pgsql dalam file

Pertama, jangan jangan campur psql meta-perintah dan SQL perintah. Ini adalah kumpulan perintah yang terpisah. Ada trik untuk menggabungkannya (menggunakan perintah meta psql \o dan \\ dan melakukan pemipaan string ke psql di shell), tetapi itu akan cepat membingungkan.

  • Buat file Anda hanya berisi perintah SQL.
  • Jangan sertakan CREATE DATABASE pernyataan dalam file SQL. Buat db secara terpisah, Anda memiliki banyak file yang ingin Anda jalankan dalam template db yang sama.

Dengan asumsi Anda beroperasi sebagai pengguna OS postgres dan gunakan peran DB postgres sebagai (default) superuser Postgres, semua database berada di cluster DB yang sama pada port default 5432 dan peran postgres memiliki akses tanpa kata sandi karena IDENT pengaturan di pg_hba.conf - pengaturan default.

psql postgres -c "CREATE DATABASE mytemplate1 WITH ENCODING 'UTF8'
                  TEMPLATE template0"

Saya mendasarkan database template baru pada database template sistem default template0 . Dasar-dasar dalam manual di sini.

Pertanyaan Anda

Cara (...) menjalankan satu set cmd pgsql dari file

Coba:

psql mytemplate1 -f file

Contoh file skrip untuk kumpulan file dalam direktori:

#! /bin/sh

for file in /path/to/files/*; do
    psql mytemplate1 -f "$file"
done

Opsi perintah -f membuat psql mengeksekusi perintah SQL dalam sebuah file.

Cara membuat database berdasarkan template yang ada di command line

psql -c 'CREATE DATABASE my_db TEMPLATE mytemplate1'

Opsi perintah -c membuat psql mengeksekusi string perintah SQL tunggal. Bisa beberapa perintah, diakhiri dengan ; - akan dieksekusi dalam satu transaksi dan hanya hasil dari perintah terakhir yang dikembalikan.
Baca tentang opsi perintah psql di manual.

Jika Anda tidak menyediakan database untuk terhubung, psql akan terhubung ke database pemeliharaan default bernama "postgres". Pada jawaban kedua, tidak relevan database mana yang kita sambungkan.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Nilai yang Dihasilkan di Postgres

  2. Kontrol Versi PostgreSQL dengan Atlassian Bitbucket

  3. Bagaimana Anda mencetak hasil kueri PostgreSQL dalam format CSV atau TSV dari baris perintah?

  4. Sisipan multi-baris dengan pg-promise

  5. Anotasi Kueri Boot Musim Semi dengan nativeQuery tidak berfungsi di Postgresql