我在表格中插入了一个数据....我想现在看到包含行,列和数据的整个表格。我如何通过命令显示它?
答案 0 :(得分:387)
psql -U username -d mydatabase -c 'SELECT * FROM mytable'
如果您是postgresql的新手,并且不熟悉使用命令行工具psql
,那么当您进入交互式会话时,您应该注意一些令人困惑的行为。
例如,启动交互式会话:
psql -U username mydatabase
mydatabase=#
此时您可以直接输入查询,但您必须记住以分号;
例如:
mydatabase=# SELECT * FROM mytable;
如果您忘记了分号,那么当您点击输入时,您的返回行将不会收到任何内容,因为psql
将假设您尚未输入查询。这可能导致各种混乱。例如,如果您重新输入相同的查询,则很可能会产生语法错误。
作为一项实验,尝试在psql提示符下输入您想要的任何乱码,然后按Enter键。 psql
会默默地为您提供一个新行。如果在该新行上输入分号然后按Enter键,则会收到错误:
mydatabase=# asdfs
mydatabase=# ;
ERROR: syntax error at or near "asdfs"
LINE 1: asdfs
^
经验法则是:
如果您没有收到psql
的回复,但您至少期待SOMETHING,那么您忘记了分号;
答案 1 :(得分:69)
SELECT * FROM my_table;
其中my_table
是您的表名。
编辑:
psql -c "SELECT * FROM my_table"
或仅psql
,然后输入您的查询。
答案 2 :(得分:21)
如果您的数据库受密码保护,那么解决方案将是:
PGPASSWORD=password psql -U username -d dbname -c "select * from my_table"
答案 3 :(得分:3)
我还注意到该查询
SELECT * FROM表名;
在psql命令提示符下给出错误 和
SELECT * FROM“ tablename”;
运行正常,真的很奇怪,所以请不要忘记双引号。 我一直很喜欢数据库:-(
答案 4 :(得分:2)
从应用程序(Mac)中打开“ SQL Shell(psql)”。
单击Enter作为默认设置。出现提示时输入密码。
*)键入\?
以获得帮助
*)键入\conninfo
以查看您作为哪个用户连接。
*)键入\l
以查看数据库列表。
*)通过\c <Name of DB>
,例如\c GeneDB1
*)现在您已经在给定的数据库中,您想知道该数据库的模式。最好的命令是\dn
。
select schema_name from information_schema.schemata;
和select nspname from pg_catalog.pg_namespace;
也可以使用(但效果不佳)的其他命令:
-)现在您有了模式,您想知道这些模式中的表。为此,您可以使用dt
命令。例如\dt "GeneSchema1".*
*)现在,您可以进行查询。例如:
*)这是上面的数据库,架构和表在pgAdmin中的外观:
答案 5 :(得分:1)
以下是针对postgres的psql命令提示符编写的查询。
D:\ TOOLS \ Postgresql-9.4.1-3 \ bin> psql -U postgres -d DatabaseName -h本地主机- t -c从用户u中“选择u。\“ UserName \”,其中u。\“ UserId \” = 1;
答案 6 :(得分:1)
我对@Grant的答案毫无疑问。但是有时我会遇到一些问题,例如,如果列名类似于诸如 natural 之类的postgresql的任何保留关键字,则在这种情况下,类似的SQL很难从命令行运行,因为“ \ natural \”会在查询字段中需要。因此,我的方法是将SQL编写在单独的文件中,然后从命令行运行SQL文件。这也有另一个优点。如果必须更改大脚本的查询,则无需触摸脚本文件或命令。只能像这样更改SQL文件
psql -h localhost -d database -U postgres -p 5432 -a -q -f /path/to/the/file.sql
答案 7 :(得分:-4)
对于特定类型的语句,您可以找到更适合使用Azure Data Studio
的语句-内置命令行附带的所有其他语句。在工作室中,您可以找到打字说明并更轻松地阅读输出。
请遵循以下步骤:
连接到您的本地或远程服务器:
仅专注于编写和执行SQL:
如果您更愿意通过psql
执行某些任务,则many有一些不错的功能,例如保存连接,创建服务器组甚至内置终端。