Jalankan permintaan PostgreSQL dari baris perintah

279

Saya memasukkan data ke dalam tabel .... Saya ingin melihat sekarang seluruh tabel dengan baris dan kolom dan data. Bagaimana saya bisa menampilkannya melalui perintah?

Manu Lakaster
sumber

Jawaban:

476

psql -U username -d mydatabase -c 'SELECT * FROM mytable'

Jika Anda baru menggunakan postgresql dan tidak terbiasa menggunakan alat baris perintah, psqlmaka ada beberapa perilaku membingungkan yang harus Anda ketahui ketika Anda memasuki sesi interaktif.

Misalnya, memulai sesi interaktif:

psql -U username mydatabase 
mydatabase=#

Pada titik ini Anda dapat memasukkan kueri secara langsung tetapi Anda harus ingat untuk mengakhiri kueri dengan titik koma;

Sebagai contoh:

mydatabase=# SELECT * FROM mytable;

Jika Anda lupa titik koma maka ketika Anda menekan enter Anda tidak akan mendapatkan apa pun di baris kembali Anda karena psqlakan menganggap bahwa Anda belum selesai memasukkan permintaan Anda. Ini dapat menyebabkan semua jenis kebingungan. Misalnya, jika Anda memasukkan kembali permintaan yang sama, kemungkinan besar Anda akan membuat kesalahan sintaksis.

Sebagai percobaan, coba ketikkan sembarang sampah yang Anda inginkan di prompt psql lalu tekan enter. psqlakan diam-diam memberi Anda garis baru. Jika Anda memasukkan tanda koma di baris baru itu dan kemudian tekan enter, maka Anda akan menerima ERROR:

mydatabase=# asdfs 
mydatabase=# ;  
ERROR:  syntax error at or near "asdfs"
LINE 1: asdfs
    ^

Aturan praktisnya adalah: Jika Anda tidak menerima tanggapan dari psqltetapi Anda mengharapkan setidaknya SESUATU, maka Anda lupa titik koma;

Hibah
sumber
4
Sejak setidaknya 7.2 (sejauh yang saya susahkan untuk memeriksa, mungkin bahkan lebih awal), psql telah memiliki opsi --single-line(atau -s) yang membuat setiap perintah langsung tanpa perlu menambahkan tanda titik koma.
Gordon
3
Saya menghabiskan satu jam men-debug dan masalahnya adalah titik koma yang hilang. TERIMA KASIH
Dawson B
106
SELECT * FROM my_table;

di mana my_tablenama meja Anda.

EDIT:

psql -c "SELECT * FROM my_table"

atau cukup psqldan kemudian ketik pertanyaan Anda.

Paul Draper
sumber
7
psql -U username -c your_database "SELECT * FROM my_table"
DrColossos
3
seperti yang dikatakan, Anda harus mengakhiri perintah Anda dengan titik koma ; jika Anda menggunakan sistem windows, lihat notws untuk pengguna windows pada dasarnya, cukup masukkan cmd.exe /c chcp 1252setelah Anda membuka konsol prompt
D_Guidi
2
untuk pengguna di masa depan, pastikan untuk menambahkan -d sebelum nama database Anda, dan -c sebelum permintaan: psql -U username -d mydatabase -c 'SELECT * FROM mytable'
jmhead
2
tidak bekerja untuk saya .Akupsql: FATAL: database "SELECT * FROM tb_name" does not exist
Jaswinder
Seperti yang ditunjukkan oleh @DrColossos, tampaknya tanda kutip ganda di sekitar perintah diperlukan dari lingkungan Windows cli / batch setidaknya.
jewbix.cube
43

Jika DB Anda dilindungi kata sandi, maka solusinya adalah:

PGPASSWORD=password  psql -U username -d dbname -c "select * from my_table"
pyAddict
sumber
3
Tidak pernah tahu bisa memberikan kata sandi dengan cara ini. Sangat berguna saat melakukan tes. Terima kasih
zhihong
21

Buka "SQL Shell (psql)" dari Aplikasi Anda (Mac).

masukkan deskripsi gambar di sini

Klik enter untuk pengaturan default. Masukkan kata sandi saat diminta.

masukkan deskripsi gambar di sini

*) Ketikkan \?bantuan

*) Ketik \conninfountuk melihat pengguna mana yang terhubung.

*) Ketik \luntuk melihat daftar Database.

masukkan deskripsi gambar di sini

*) Sambungkan ke database dengan \c <Name of DB>, misalnya\c GeneDB1

masukkan deskripsi gambar di sini

Anda akan melihat perubahan prompt kunci ke DB baru, seperti: masukkan deskripsi gambar di sini

*) Sekarang Anda berada di DB yang diberikan, Anda ingin mengetahui Skema untuk DB itu. Perintah terbaik untuk melakukan ini adalah \dn.

masukkan deskripsi gambar di sini

Perintah lain yang juga berfungsi (tapi tidak sebagus) adalah select schema_name from information_schema.schemata;dan select nspname from pg_catalog.pg_namespace;:

masukkan deskripsi gambar di sini

-) Sekarang setelah Anda memiliki Skema, Anda ingin tahu tabel di Skema tersebut. Untuk itu, Anda bisa menggunakan dtperintah. Sebagai contoh\dt "GeneSchema1".*

masukkan deskripsi gambar di sini

*) Sekarang Anda dapat melakukan pertanyaan Anda. Sebagai contoh:

masukkan deskripsi gambar di sini

*) Berikut ini tampilan DB, Skema, dan Tabel di atas di pgAdmin:

masukkan deskripsi gambar di sini

Gene
sumber
3
  1. Buka prompt perintah dan pergi ke direktori tempat Postgres diinstal. Dalam kasus saya, jalur Postgres saya adalah "D: \ TOOLS \ Postgresql-9.4.1-3". Setelah itu pindah ke direktori tempat sampah dari Postgres. Jadi, prompt perintah muncul sebagai "D: \ TOOLS \ Postgresql-9.4.1-3 \ bin> "
  2. Sekarang tujuan saya adalah untuk memilih "UserName" dari tabel pengguna menggunakan nilai "UserId". Jadi query database adalah " Select u." UserName "dari pengguna u Where u." UserId "= 1 ".

Query yang sama ditulis seperti di bawah ini untuk prompt perintah psql postgres.

D: \ TOOLS \ Postgresql-9.4.1-3 \ bin> psql -U postgres -d DatabaseName -h localhost - t -c "Pilih u. \" UserName \ "dari pengguna u Where u. \" UserId \ "= 1;

KPatel
sumber
3

Saya tidak ragu dengan jawaban @Grant. Tapi saya menghadapi beberapa masalah kadang-kadang seperti jika nama kolom mirip dengan kata kunci yang disediakan postgresql seperti alami dalam hal ini SQL yang sama sulit dijalankan dari baris perintah karena "\ natural \" akan diperlukan di bidang Query. Jadi pendekatan saya adalah menulis SQL dalam file terpisah dan menjalankan file SQL dari baris perintah. Ini memiliki keunggulan lain juga. Jika Anda harus mengubah kueri untuk skrip besar, Anda tidak perlu menyentuh file skrip atau perintah. Ubah saja file SQL seperti ini

psql -h localhost -d database -U postgres -p 5432 -a -q -f /path/to/the/file.sql
Iblis Mimpi
sumber
3

Saya juga memperhatikan permintaan itu

PILIH * DARI tablename;

memberikan kesalahan pada prompt perintah psql dan

PILIH * DARI "tablename";

berjalan dengan baik, sangat aneh, jadi jangan lupa tanda kutip ganda. Saya selalu menyukai database :-(

Ben
sumber
-8

Untuk jenis pernyataan tertentu, Anda dapat menemukan yang lebih sesuai untuk digunakan Azure Data Studio- untuk semua yang lain, ia hadir dengan baris perintah bawaan. Menggunakan studio Anda dapat menemukan pernyataan mengetik dan membaca output lebih nyaman.

Ikuti langkah-langkah di bawah ini:

  1. Instal Azure Data Studio - adalah editor modern lintas platform yang berfokus pada pengembangan data; itu open source dan dapat dikembangkan - dua hal yang menjadi dasar PostgreSQL itu sendiri;
  2. Instal ekstensi PostgreSQL
  3. Terhubung ke server lokal atau jauh Anda:

    masukkan deskripsi gambar di sini

  4. Fokus pada penulisan dan eksekusi SQL saja:

    masukkan deskripsi gambar di sini

Ada banyak fitur bagus seperti menyimpan koneksi, membuat grup server dan bahkan terminal built-in jika Anda lebih nyaman melakukan beberapa tugas melalui psql.

Gotqn
sumber