从命令行运行PostgreSQL查询

时间:2013-10-30 05:24:41

标签: database postgresql

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

8 个答案:

答案 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 image description here

单击Enter作为默认设置。出现提示时输入密码。

enter image description here

*)键入\?以获得帮助

*)键入\conninfo以查看您作为哪个用户连接。

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

enter image description here

*)通过\c <Name of DB>,例如\c GeneDB1

连接到数据库

enter image description here

您应该看到按键提示更改为新数据库,如下所示:enter image description here

*)现在您已经在给定的数据库中,您想知道该数据库的模式。最好的命令是\dn

enter image description here

select schema_name from information_schema.schemata;select nspname from pg_catalog.pg_namespace;也可以使用(但效果不佳)的其他命令:

enter image description here

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

enter image description here

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

enter image description here

*)这是上面的数据库,架构和表在pgAdmin中的外观:

enter image description here

答案 5 :(得分:1)

  1. 打开命令提示符,然后转到Postgres的安装目录。在我的情况下,我的 Postgres路径是“ D:\ TOOLS \ Postgresql-9.4.1-3”。此后,移至Postgres的bin目录。命令提示符显示为“ D:\ TOOLS \ Postgresql-9.4.1-3 \ bin>“
  2. 现在我的目标是使用“ UserId”值从用户表中选择“ UserName”。因此数据库查询是“ 从用户u中选择u。” UserName”,其中u。“ UserId” = 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的语句-内置命令行附带的所有其他语句。在工作室中,您可以找到打字说明并更轻松地阅读输出。

请遵循以下步骤:

  1. 安装Azure Data Studio-是专注于数据开发的跨平台现代编辑器;它是开源且可扩展的-PostgreSQL本身就是基于两件事;
  2. 安装PostgreSQL扩展
  3. 连接到您的本地或远程服务器:

    enter image description here

  4. 仅专注于编写和执行SQL:

    enter image description here

如果您更愿意通过psql执行某些任务,则many有一些不错的功能,例如保存连接,创建服务器组甚至内置终端。