我在表....中插入了一个数据我想看到整个表的行,列和数据。我如何通过命令显示它?
当前回答
在应用程序(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中的样子:
其他回答
SELECT * FROM my_table;
其中my_table是你的表名。
编辑:
psql -c "SELECT * FROM my_table"
或者只是PSQL,然后键入您的查询。
打开命令提示符,进入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;
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
如果您的数据库是密码保护,那么解决方案将是:
PGPASSWORD=password psql -U username -d dbname -c "select * from my_table"
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,那么你忘记了分号;
推荐文章
- 如何改变一个列的数据类型在PostgreSQL表?
- 获取PostGIS版本
- 如何添加“删除级联”约束?
- 我如何得到“id”后插入到MySQL数据库与Python?
- 什么是ORM,它是如何工作的,我应该如何使用它?
- 如何将PostgreSQL从9.6版本升级到10.1版本而不丢失数据?
- 为现有数据库生成ERD
- BASE术语解释
- PostgreSQL错误:由于与恢复冲突而取消语句
- 按IN值列表排序
- 如何在Postgres 9.4中对JSONB类型的列执行更新操作
- 非加密用途的最快哈希?
- 查询以列出数据库中每个表中的记录数量
- PostgreSQL列名区分大小写吗?
- postgresql COUNT(DISTINCT…)非常慢