私はテーブルにデータを挿入しました……行と列、そしてデータを含むテーブル全体を見たいのです。コマンドで表示する方法は?
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を期待していた場合、セミコロン;
を忘れていました。
SELECT * FROM my_table;
my_table
はあなたのテーブルの名前です。
編集:
psql -c "SELECT * FROM my_table"
またはpsql
と入力してからクエリを入力します。
DBがパスワードで保護されている場合、解決策は次のようになります。
PGPASSWORD=password psql -U username -d dbname -c "select * from my_table"
@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
アプリケーション(Mac)から「SQLシェル(psql)」を開きます。
デフォルト設定でEnterをクリックします。プロンプトが表示されたらパスワードを入力します。
*)ヘルプとして\?
と入力
*)あなたが接続しているユーザーを確認するには、\conninfo
と入力します。
*)データベースのリストを見るには\l
とタイプしてください。
*)\c <Name of DB>
でデータベースに接続します。例えば\c GeneDB1
*)与えられたDBに入ったので、そのDBのスキーマを知りたいのです。これを行うための最善のコマンドは\dn
です。
同様に機能する(しかしそれほど良くない)他のコマンドはselect schema_name from information_schema.schemata;
とselect nspname from pg_catalog.pg_namespace;
です。
- )スキーマが完成したので、これらのスキーマのテーブルを知りたいと思います。そのためには、dt
コマンドを使用できます。例えば\dt "GeneSchema1".*
*)これでクエリを実行できます。例えば:
*)上記のDB、スキーマ、テーブルはpgAdminの中でどのように見えるかです。
以下のように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;