我在表....中插入了一个数据我想看到整个表的行,列和数据。我如何通过命令显示它?


SELECT * FROM my_table;

其中my_table是你的表名。

编辑:

psql -c "SELECT * FROM my_table"

或者只是PSQL,然后键入您的查询。


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

如果你是postgresql的新手,不熟悉使用命令行工具psql,那么当你进入一个交互式会话时,你应该注意一些令人困惑的行为。

例如,发起一个交互式会话:

psql -U username mydatabase 
mydatabase=#

此时,您可以直接输入查询,但必须记住以分号结束查询;

例如:

mydatabase=# SELECT * FROM mytable;

如果您忘记了分号,那么当您按回车键时,您将在返回行中得不到任何东西,因为psql将假设您没有完成输入查询。这会导致各种各样的困惑。例如,如果您重新输入相同的查询,很可能会产生语法错误。

作为一个实验,尝试在psql提示符下输入任何你想要的乱码,然后按enter。PSQL将默默地为您提供一个新行。如果你在新行输入一个分号,然后按回车键,那么你会收到ERROR:

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

经验法则是: 如果你没有收到来自psql的响应,但你期望至少SOMETHING,那么你忘记了分号;


如果您的数据库是密码保护,那么解决方案将是:

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

打开命令提示符,进入Postgres安装的目录。在我的情况下,我的Postgres路径是“D:\TOOLS\Postgresql-9.4.1-3”。然后移动到Postgres的bin目录。因此命令提示符显示为"D:\TOOLS\Postgresql-9.4.1-3\bin>" 现在我的目标是从用户表中使用“UserId”值选择“UserName”。数据库查询是"Select u "UserName" from users u其中u."UserId"=1"。

对于postgres的psql命令提示符,同样的查询如下所示。

D:\TOOLS\Postgresql-9.4.1-3\bin>psql - u postgress - D DatabaseName -h localhost - t -c "Select u.\"UserName\" from users u其中u.\"UserId\"=1;


在应用程序(Mac)中打开“SQL Shell (psql)”。

单击enter以获得默认设置。根据提示输入密码。

*)类型\?寻求帮助

*)输入\conninfo查看您连接的用户。

*)输入\l查看数据库列表。

*)通过\c <数据库>的名称连接到数据库,例如\c GeneDB1

您应该看到键提示符更改为新的DB,如下所示:

*)现在您在一个给定的DB中,您想知道该DB的schema。最好的命令是\dn。

其他同样有效(但不是那么好)的命令有select schema_name from information_schema.schemata;从pg_catalog.pg_namespace中选择nspname:

-)现在您已经有了schema,您想知道这些schema中的表。为此,您可以使用dt命令。例如\dt "GeneSchema1".*

*)现在您可以进行查询。例如:

*)下面是上面的DB, Schema和Tables在pgAdmin中的样子:


I have no doubt on @Grant answer. But I face few issues sometimes such as if the column name is similar to any reserved keyword of postgresql such as natural in this case similar SQL is difficult to run from the command line as "\natural\" will be needed in Query field. So my approach is to write the SQL in separate file and run the SQL file from command line. This has another advantage too. If you have to change the query for a large script you do not need to touch the script file or command. Only change the SQL file like this

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

我还注意到查询

SELECT * FROM tablename;

在PSQL命令提示符上给出错误 而且

SELECT * FROM "tablename";

运行正常,很奇怪,所以别忘了双引号。 我一直喜欢数据库:-(


我将添加我的经验,一个命令,在windows机器上。 我想尝试运行一个命令,从中我将获得表内容。

这是一个对我有用的命令:

psql -U postgres -d typeorm -c "SELECT * FROM \"Author\";

- u postgres - user -d typeorm -我要连接的数据库 - c…-我的查询命令 ; ——分号

我遇到了一些问题,主要是弄清楚如何准确地设置查询部分。我尝试了不同的命令,比如:用',",(),但除了这个符号外,没有什么对我有效。


在有密码保护的数据库中直接执行SQL命令。它宁愿在命令行中使用连接字符串格式。 使用该命令:

psql -d postgresql://postgres:password@localhost:5432/dbname 
-c "create database sample1 --or any command"


## Using SQL file
PGPASSWORD=myPassword psql -h myDbHost -U myUser -p 5432 -d my_db -a -q -f /path/to/sql/file.sql
## Or
PGPASSWORD=myPassword psql -h myDbHost -U myUser -p 5432 -d my_db < /path/to/sql/file.sql

## Using command
PGPASSWORD=myPassword psql -h myDbHost -U myUser -p 5432 -d my_db -c "select * from my table limit 1;"