[PostgreSQL] psql dan Scripting Query
psql
Belajar atau bermain database PostgreSQL dengan aplikasi dengan tampilan memang mudah, tapi menggunakan tool bawaan dari Postgres resmi jauh lebih powerful. Namanya, psql.
psql adalah executable file yang ada di semua versi Postgres dan bisa digunakan tanpa kuatir soal perbedaan versi. psql dari versi 8.0 pun masih bisa digunakan untuk versi 11, meski fiturnya tak mampu dipakai untuk digunakan pada semua fitur yang ada di postgres versi 11.
Pada dasarnya, psql digunakan sebagai berikut:
psql -h <HOSTNAME> -p 5432 -d mydatabase -U myuser
Atau
psql postgresql://myuser@HOSTNAME:5432/mydatabase
HOSTNAME
: adalah server di mana postgres berjalan5432
: adalah port standar dari postgres, ganti ke angka lain jika diubah pada server
Cara pakai
psql -h <HOSTNAME> -p 5432 -d mydatabase -U myuser -c "SELECT NOW()"
now
───────────────────────────────
2019-04-02 16:37:05.401353+02
(1 row)
-c
adalah opsi untuk menjalankan SQL command secara non-interaktif, alias proses selesai setelah perintah yang diberikan selesai.
Jika ingin menjalankan banyak SQL commands dalam jumlah banyak, maka opsi yang bisa digunakan adalah kumpulan SQL commands dalam bentuk file dan dijalankan dengan psql -f <NAMA_FILE.sql>
Dengan file seperti ini:
SET search_path='public';
CREATE TEMP TABLE x (x INT, y INT, c VARCHAR);
maka hasilnya adalah sebagai berikut:
psql -h <HOSTNAME> -p 5432 -d mydatabase -U myuser -f ex.sql
SET
Time: 0.786 ms
CREATE TABLE
Time: 15.371 ms
Perintah di psql
Perintah yang bisa dijalankan dalam psql dapat berupa psql meta-commands, yaitu perintah bawaan dan bantuan dalam psql saja, serta perintah dalam bentuk SQL commands seperti SELECT, UPDATE, dll.
Bagaimana jika tidak yakin bagaimana bentuk perintah SQL? Gampang, gunakan bantuan alias help
seperti: \h <<PERINTAH_SQL>>
postgres=# \h UPDATE
Command: UPDATE
Description: update rows of a table
Syntax:
[ WITH [ RECURSIVE ] with_query [, ...] ]
UPDATE [ ONLY ] table_name [ * ] [ [ AS ] alias ]
SET { column_name = { expression | DEFAULT } |
( column_name [, ...] ) = [ ROW ] ( { expression | DEFAULT } [, ...] ) |
( column_name [, ...] ) = ( sub-SELECT )
} [, ...]
[ FROM from_list ]
[ WHERE condition | WHERE CURRENT OF cursor_name ]
[ RETURNING * | output_expression [ [ AS ] output_name ] [, ...] ]
Beberapa fitur berguna lain dalam psql adalah sebagai berikut:
- formatting output dari hasil SQL commands
- mengganti parameter atau variable dengan mudah
- menjalankan perintah level OS seperti membuka file dll
- konfigurasi leluasa melalui .psqlrc file
- informasi lengkap mengenai function dll
Exit
Salah satu persoalan paling sering ditemui oleh pemula adalah bagaimana caranya keluar/exit/quit dari psql. Sejak versi Postgres 11, sudah ada perintah quit
dan exit
. Namun, jika masih ada di versi 10 atau di bawahnya, perintah untuk keluar dari psql adalah \q
Lanjutan
Untuk informasi lengkap dan lebih lanjut mengenai psql, bisa ke dokumentasi resmi yang ada di https://www.postgresql.org/docs/current/app-psql.html.