我将数据插入到表中......我现在想查看包含行、列和数据的整个表。我如何通过命令显示它?
8 回答
psql -U username -d mydatabase -c 'SELECT * FROM mytable'
如果您是 postgresql 新手并且不熟悉使用命令行工具psql
,那么当您进入交互式会话时,您应该注意一些令人困惑的行为。
例如,启动一个交互式会话:
psql -U username mydatabase
mydatabase=#
此时您可以直接输入查询,但您必须记住用分号终止查询;
例如:
mydatabase=# SELECT * FROM mytable;
如果您忘记了分号,那么当您按下回车键时,您的返回行将一无所获,因为psql
将假设您尚未完成输入查询。这会导致各种混乱。例如,如果您重新输入相同的查询,您很可能会产生语法错误。
作为一个实验,尝试在 psql 提示符下输入任何你想要的乱码,然后按回车键。psql
会默默地为你提供一条新线路。如果您在该新行上输入一个分号,然后按 Enter,那么您将收到错误:
mydatabase=# asdfs
mydatabase=# ;
ERROR: syntax error at or near "asdfs"
LINE 1: asdfs
^
经验法则是:如果您没有收到任何回复,psql
但您至少期待某事,那么您忘记了分号;
SELECT * FROM my_table;
my_table
你的桌子的名字在哪里。
编辑:
psql -c "SELECT * FROM my_table"
或者只是psql
然后输入您的查询。
如果您的数据库受密码保护,那么解决方案是:
PGPASSWORD=password psql -U username -d dbname -c "select * from my_table"
从您的应用程序 (Mac) 打开“SQL Shell (psql)”。
点击进入默认设置。出现提示时输入密码。
*)\?
输入帮助
*) 键入\conninfo
以查看您以哪个用户身份连接。
*) 键入\l
以查看数据库列表。
\c <Name of DB>
*)例如,通过 连接到数据库\c GeneDB1
*) 现在你在一个给定的数据库中,你想知道那个数据库的模式。执行此操作的最佳命令是\dn
.
其他也可以工作(但效果不佳)的命令是select schema_name from information_schema.schemata;
and select nspname from pg_catalog.pg_namespace;
:
-) 现在您已经有了 Schemas,您想知道这些 Schemas 中的表。为此,您可以使用该dt
命令。例如\dt "GeneSchema1".*
*) 现在您可以进行查询了。例如:
*) 以下是上述 DB、Schema 和 Tables 在 pgAdmin 中的样子:
我还注意到查询
选择 * FROM 表名;
在 psql 命令提示符上给出错误,并且
选择 * 从“表名”;
运行良好,真的很奇怪,所以不要忘记双引号。我一直喜欢数据库:-(
我对@Grant 的回答毫不怀疑。但是我有时会遇到一些问题,例如列名是否类似于 postgresql 的任何保留关键字,例如natural在这种情况下,很难从命令行运行类似的 SQL,因为在 Query 字段中将需要“\natural\”。所以我的方法是在单独的文件中编写 SQL 并从命令行运行 SQL 文件。这也有另一个优势。如果您必须更改大型脚本的查询,则无需触及脚本文件或命令。只更改这样的 SQL 文件
psql -h localhost -d database -U postgres -p 5432 -a -q -f /path/to/the/file.sql
- 打开命令提示符并转到 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 Where u.“UserId”=1 “。
下面为 postgres 的 psql 命令提示符编写相同的查询。
D:\TOOLS\Postgresql-9.4.1-3\bin>psql -U postgres -d DatabaseName -h localhost -t -c "Select u.\"UserName\" from users u Where u.\"UserId\"= 1个;
我将在 Windows 机器上添加我对一个命令的经验。我想尝试运行单个命令,从中获取表格内容。
这是对我有用的单个命令:
psql -U postgres -d typeorm -c "SELECT * FROM \"Author\"";
- -U postgres - 用户
- -d typeorm - 我要连接的数据库
- -c ... - 我的查询命令
- ; - 分号
我遇到了问题,主要是弄清楚如何准确设置查询部分。我尝试使用不同的命令,例如:使用 '、"、(),但除了这个符号外,没有什么对我有用。