web-dev-qa-db-ja.com

コマンドラインからPostgreSQLクエリを実行する

私はテーブルにデータを挿入しました……行と列、そしてデータを含むテーブル全体を見たいのです。コマンドで表示する方法は?

215
Manu Lakaster

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

Postgresqlの初心者で、コマンドラインツールpsqlの使い方に慣れていない場合は、対話型セッションに入ったときに気を付けなければならない混乱した動作があります。

たとえば、対話型セッションを開始します。

psql -U username mydatabase 
mydatabase=#

この時点で直接クエリを入力できますが、 セミコロンでクエリを終了することを忘れないでください;

例えば:

mydatabase=# SELECT * FROM mytable;

セミコロンを忘れた場合、enterを押したときにリターンラインに何も表示されません。なぜならpsqlは、クエリの入力が終了していないと想定するからです。これはあらゆる種類の混乱を招く可能性があります。たとえば、同じクエリを再入力すると、ほとんどの場合構文エラーが発生します。

実験として、psqlのプロンプトで文字化けしたいものを入力し、enterを押してみてください。 psqlは黙ってあなたに新しい行を提供します。その新しい行にセミコロンを入力してからenterキーを押すと、エラーが表示されます。

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

経験則は、psqlから応答がなかったが、少なくともSOMETHINGを期待していた場合、セミコロン;を忘れていました。

383
Grant
SELECT * FROM my_table;

my_tableはあなたのテーブルの名前です。

編集:

psql -c "SELECT * FROM my_table"

またはpsqlと入力してからクエリを入力します。

69
Paul Draper

DBがパスワードで保護されている場合、解決策は次のようになります。

PGPASSWORD=password  psql -U username -d dbname -c "select * from my_table"
21
pyAddict

@Grantの回答には間違いありません。しかし、列名がnaturalなどのpostgresqlの予約キーワードに似ている場合など、いくつかの問題に直面することがあります。この場合、「\ natural \」のようにSQLクエリフィールドで必要です。したがって、私のアプローチは、SQLを別のファイルに書き込み、コマンドラインからSQLファイルを実行することです。これには別の利点もあります。大きなスクリプトのクエリを変更する必要がある場合は、スクリプトファイルまたはコマンドを変更する必要はありません。このようなSQLファイルのみを変更します

psql -h localhost -d database -U postgres -p 5432 -a -q -f /path/to/the/file.sql
2
Devil's Dream

アプリケーション(Mac)から「SQLシェル(psql)」を開きます。

enter image description here

デフォルト設定でEnterをクリックします。プロンプトが表示されたらパスワードを入力します。

enter image description here

*)ヘルプとして\?と入力

*)あなたが接続しているユーザーを確認するには、\conninfoと入力します。

*)データベースのリストを見るには\lとタイプしてください。

enter image description here

*)\c <Name of DB>でデータベースに接続します。例えば\c GeneDB1

enter image description here

次のように、キープロンプトが新しいDBに変更されます。 enter image description here

*)与えられたDBに入ったので、そのDBのスキーマを知りたいのです。これを行うための最善のコマンドは\dnです。

enter image description here

同様に機能する(しかしそれほど良くない)他のコマンドはselect schema_name from information_schema.schemata;select nspname from pg_catalog.pg_namespace;です。

enter image description here

- )スキーマが完成したので、これらのスキーマのテーブルを知りたいと思います。そのためには、dtコマンドを使用できます。例えば\dt "GeneSchema1".*

enter image description here

*)これでクエリを実行できます。例えば:

enter image description here

*)上記のDB、スキーマ、テーブルはpgAdminの中でどのように見えるかです。

enter image description here

2
Gene
  1. コマンドプロンプトを開き、Postgresがインストールされているディレクトリに移動します。私の場合、私の Postgresパス は "D:\ TOOLS\Postgresql-9.4.1-3"です。その後Postgres.Soコマンドのbinディレクトリに移動します。 "Prompt"は "D:\ TOOLS\Postgresql-9.4"と表示されます。 .1-3\bin> "
  2. 今私の目標は "UserId"値を使用してusersテーブルから "UserName"を選択することです。データベースクエリは " ユーザーからu。" UserName "を選択するuここで" UserId "= 1 "です。

以下のようにpsqlコマンドのPrompt of postgresに対しても同じ問い合わせが書かれています。

D:\ TOOLS\Postgresql-9.4.1-3\bin> psql -U postgres -d DatabaseName -h localhost - t -c "ユーザーからu。\" UserName\"を選択します。u \" UserId\"= 1;

1
KPatel