web-dev-qa-db-fra.com

Exécuter des requêtes PostgreSQL à partir de la ligne de commande

J'ai inséré une donnée dans une table ... Je veux voir maintenant une table entière avec des lignes, des colonnes et des données. Comment puis-je l'afficher par commande?

238
Manu Lakaster

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

Si vous êtes nouveau sur Postgresql et que vous ne connaissez pas bien l’outil de ligne de commande psql, vous devez être conscient de certains comportements déroutants lorsque vous êtes entré dans une session interactive.

Par exemple, lancez une session interactive:

psql -U username mydatabase 
mydatabase=#

À ce stade, vous pouvez entrer une requête directement mais vous devez vous rappeler de mettre fin à la requête avec un point-virgule ;

Par exemple:

mydatabase=# SELECT * FROM mytable;

Si vous oubliez le point-virgule, alors, lorsque vous appuierez sur Entrée, vous n'obtiendrez rien sur votre ligne de retour, car psql supposera que vous n'avez pas fini de saisir votre requête. Cela peut conduire à toutes sortes de confusion. Par exemple, si vous saisissez à nouveau la même requête, vous aurez probablement une erreur de syntaxe.

En guise d’expérience, essayez de saisir l’ordre de votre choix à l’invite psql, puis appuyez sur Entrée. psql vous fournira une nouvelle ligne. Si vous entrez un point-virgule sur cette nouvelle ligne, puis appuyez sur Entrée, vous recevrez l'ERREUR:

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

La règle de base est la suivante: si vous n’avez reçu aucune réponse de psql mais que vous attendiez au moins quelque chose, vous avez oublié le point-virgule ;

415
Grant
SELECT * FROM my_table;

my_table est le nom de votre table.

MODIFIER:

psql -c "SELECT * FROM my_table"

ou simplement psql puis saisissez vos requêtes.

78
Paul Draper

Si votre base de données est protégée par un mot de passe, la solution serait la suivante:

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

Ouvrez "SQL Shell (psql)" à partir de vos applications (Mac).

enter image description here

Cliquez sur Entrée pour les paramètres par défaut. Entrez le mot de passe lorsque vous y êtes invité.

enter image description here

*) Tapez \? pour obtenir de l'aide

*) Tapez \conninfo pour voir quel utilisateur vous êtes connecté.

*) Tapez \l pour voir la liste des bases de données.

enter image description here

*) Se connecter à une base de données par \c <Name of DB>, par exemple \c GeneDB1

enter image description here

Vous devriez voir la touche Invite de la clé dans la nouvelle base de données, comme suit: enter image description here

*) Maintenant que vous êtes dans une base de données donnée, vous voulez connaître les schémas de cette base de données. La meilleure commande à faire est \dn.

enter image description here

Les autres commandes qui fonctionnent aussi (mais pas aussi bien) sont select schema_name from information_schema.schemata; et select nspname from pg_catalog.pg_namespace;:

enter image description here

-) Maintenant que vous avez les schémas, vous voulez connaître les tables de ces schémas. Pour cela, vous pouvez utiliser la commande dt. Par exemple \dt "GeneSchema1".*

enter image description here

*) Maintenant, vous pouvez faire vos requêtes. Par exemple:

enter image description here

*) Voici à quoi ressemblent la base de données, le schéma et les tables ci-dessus dans pgAdmin:

enter image description here

6
Gene

Je n'ai aucun doute sur la réponse @Grant. Mais je rencontre quelques problèmes parfois, par exemple si le nom de la colonne est similaire à un mot clé réservé de postgresql tel que natural dans ce cas, un code SQL similaire est difficile à exécuter à partir de la ligne de commande, car "\ natural \" être nécessaire dans le champ de requête. Donc, mon approche consiste à écrire le SQL dans un fichier séparé et à l'exécuter en ligne de commande. Cela a aussi un autre avantage. Si vous devez modifier la requête d'un script volumineux, vous n'avez pas besoin de toucher le fichier de script ou la commande. Ne changez le fichier SQL comme ceci

psql -h localhost -d database -U postgres -p 5432 -a -q -f /path/to/the/file.sql
2
Devil's Dream
  1. Ouvrez une invite de commande et accédez au répertoire où Postgres est installé. Dans mon cas, mon chemin de Postgres est "D:\TOOLS\Postgresql-9.4.1-3" .Après ce déplacement dans le répertoire bin de la commande Postgres.So, l'invite s'affiche sous la forme "D:\TOOLS\Postgresql-9.4.1-3\bin> "
  2. Maintenant, mon objectif est de sélectionner "UserName" dans la table users en utilisant la valeur "UserId". La requête de la base de données est donc "Sélectionnez u." UserName "parmi les utilisateurs u Où" UserId "= 1" .

La même requête est écrite comme ci-dessous pour la commande psql Invite de postgres.

D:\TOOLS\Postgresql-9.4.1-3\bin> psql -U postgres -d DatabaseName -h localhost - t -c "Sélectionnez u. \" UserName\"parmi les utilisateurs u Où u. \" UserId\"= 1;

1
KPatel