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?
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 ;
SELECT * FROM my_table;
où my_table
est le nom de votre table.
MODIFIER:
psql -c "SELECT * FROM my_table"
ou simplement psql
puis saisissez vos requêtes.
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"
Ouvrez "SQL Shell (psql)" à partir de vos applications (Mac).
Cliquez sur Entrée pour les paramètres par défaut. Entrez le mot de passe lorsque vous y êtes invité.
*) 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.
*) Se connecter à une base de données par \c <Name of DB>
, par exemple \c GeneDB1
Vous devriez voir la touche Invite de la clé dans la nouvelle base de données, comme suit:
*) 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
.
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;
:
-) 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".*
*) Maintenant, vous pouvez faire vos requêtes. Par exemple:
*) Voici à quoi ressemblent la base de données, le schéma et les tables ci-dessus dans pgAdmin:
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
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;