Katakanlah saya perlu menulis beberapa pertanyaan di konsol, apa cara paling efisien untuk mengeksekusi pertanyaan multiline seperti CREATE TABLE
pernyataan?
Saya sudah terbiasa menggunakan Microsoft Management Studio, tetapi sekarang saya harus belajar tentang PostgreSQL dengan cepat.
postgresql
Chad Harrison
sumber
sumber
#
prompt muncul hanya memasukkan satu baris pada waktu yang bagus untuk hal-hal sepertiCREATE DATABASE
atauALTER USER
. Bagaimana saya bisa memformat teks saya dengan baik sebelum dieksekusi?Jawaban:
Benar-benar tidak ada yang namanya "permintaan multi-line" - sejauh yang dipedulikan PostgreSQL, semua spasi putih dan baris-baris baru itu tidak ada artinya (kecuali mereka muncul di dalam string atau kita berbicara tentang tab & seperti dalam
COPY
pernyataan atau beberapa tempat khusus lainnya).Menulis pertanyaan "pada konsol" melalui SSH biasanya dilakukan dengan
psql
alat, yang merupakan terminal interaktif Postgres (lihat dokumen untuk info lebih lanjut).Anda dapat melewati file teks yang berisi query untuk
psql
menggunakan-f
pilihan.Anda juga dapat meneruskan pertanyaan ke
psql
pada baris perintah (dikutip sesuai untuk shell Anda), atau pipa mereka melalui STDIN (aliran input standar) - lihat-c
opsi.sumber
Berikut ini akan membawa Anda ke terminal interaktif PostgreSQL:
Kemudian masukkan
\e
(atau\edit
) untuk membuka editor (vi
default):Tulis beberapa permintaan:
Terakhir, simpan dan keluar dari editor Anda (mis.
:wq
Divi
), danpsql
akan menjalankan kueri yang baru saja Anda tulis.Untuk mengatur editor yang berbeda, seperti
vim
ataunano
, set salah satu variabel lingkungan berikut:PSQL_EDITOR
,EDITOR
,VISUAL
.Untuk informasi lebih lanjut, lihat https://www.postgresql.org/docs/current/app-psql.html dan cari
\e
.sumber
Anda bisa menulis kueri ke file temp dan jalankan dengan
psql -f /path/to/temp/file
sumber
Jelas, tetapi jika ada yang tidak sadar, Anda dapat menulis pernyataan multi-line langsung di prompt psql:
Perhatikan
;
karakter trailing - perintah SQL apa pun hanya akan dieksekusi setelah karakter ini dikeluarkan. Jadi cara termudah adalah dengan cukup menyalin & menempelkan perintah SQL multi-line dengan trailing;
.sumber