Apa cara yang nyaman untuk menjalankan kueri multiline di postgres menggunakan ssh?

9

Katakanlah saya perlu menulis beberapa pertanyaan di konsol, apa cara paling efisien untuk mengeksekusi pertanyaan multiline seperti CREATE TABLEpernyataan?

Saya sudah terbiasa menggunakan Microsoft Management Studio, tetapi sekarang saya harus belajar tentang PostgreSQL dengan cepat.

Chad Harrison
sumber
Ketikkan? Salin dan tempel? Redirect dari file?
Michael Hampton
Ya maksud saya mengetikkannya dengan jari saya: P. Apa yang saya maksudkan adalah bahwa postgres #prompt muncul hanya memasukkan satu baris pada waktu yang bagus untuk hal-hal seperti CREATE DATABASEatau ALTER USER. Bagaimana saya bisa memformat teks saya dengan baik sebelum dieksekusi?
Chad Harrison

Jawaban:

4

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 COPYpernyataan atau beberapa tempat khusus lainnya).

Menulis pertanyaan "pada konsol" melalui SSH biasanya dilakukan dengan psqlalat, yang merupakan terminal interaktif Postgres (lihat dokumen untuk info lebih lanjut).

Anda dapat melewati file teks yang berisi query untuk psqlmenggunakan -fpilihan.

Anda juga dapat meneruskan pertanyaan ke psqlpada baris perintah (dikutip sesuai untuk shell Anda), atau pipa mereka melalui STDIN (aliran input standar) - lihat -copsi.

voretaq7
sumber
Pipa, seharusnya memikirkan pipa. Saya masih belajar.
Chad Harrison
25

Berikut ini akan membawa Anda ke terminal interaktif PostgreSQL:

$ psql <your database name>

Kemudian masukkan \e(atau \edit) untuk membuka editor ( videfault):

# \e

Tulis beberapa permintaan:

select now();

Terakhir, simpan dan keluar dari editor Anda (mis. :wqDi vi), dan psqlakan menjalankan kueri yang baru saja Anda tulis.

Untuk mengatur editor yang berbeda, seperti vimatau nano, 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.

Ilmuwan TheGrimm
sumber
2

Anda bisa menulis kueri ke file temp dan jalankan dengan psql -f /path/to/temp/file

Nam G VU
sumber
0

Jelas, tetapi jika ada yang tidak sadar, Anda dapat menulis pernyataan multi-line langsung di prompt psql:

psql -h localhost -p 5432 -U postgres public
public=# SELECT
public=# *
public=# FROM
public=# mytable
public=# LIMIT 1;

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 ;.

Alex
sumber