如何从命令行执行 SQL 语句?

j45*_*50n 6 command-line postgresql sql

我是一个长期尝试切换到命令行的 GUI 用户,我不确定如何从 Ubuntu 命令行执行 SQL 语句。我正在使用 postgres。我可以\c用来连接到数据库并\d查看其中的表。我还可以看到带有\d dbnamedbname数据库名称在哪里)的标题。我不能做的是看到实际数据。

我尝试过 SELECT * FROM dbname;,但出现“dbname 处或附近的语法错误”。我在没有分号的情况下尝试了它,并且刚刚获得了一个新的命令行。我如何查看我的数据?提前致谢。

Ser*_*nyy 11

编辑:OP的实际问题显然是完全由数字组成的表名。根据SQL-92 标准,表名不能以数字开头,但可以包含数字。对于这种情况,只需将名称用双引号或单引号括起来,如下所示SELECT * FROM "12345";

本质上,您需要的是psql命令- Postgres 的命令行解释器,它默认随 Ubuntu 上的 Postgres 安装一起提供。运行psql -U username databasename将允许您连接到它,并通过该命令行解释器执行 SQL 查询。如果您询问如何在bashshell 中运行命令,则应该使用psql带标志的命令-c。类似的东西

psql -U username -d database.db -c "SELECT * FROM some_table"
Run Code Online (Sandbox Code Playgroud)

对于多行查询,您可以使用heredoc

$ psql -U admin_serg hello_world <<EOF
> SELECT * FROM foobar;
> EOF                  

 foo |     bar     
-----+-------------
   1 | Hello World
(1 row)
Run Code Online (Sandbox Code Playgroud)

当然,如果您还没有使用 创建特定用户postgres,您可能需要这样做,或者psql首先以用户身份登录sudo su postgres

至于语法错误,您可能尝试直接在命令行中输入 SQL 查询(在您的情况下,可能是bashshell )。这不是它的工作原理 -bash不理解 SQL,只理解它自己的语法,因此为什么psql存在命令行解释器,就像其他数据库(sqlite3例如)或有 GUI 工具(例如pgAdminpostgres 或sqlitebrowsersqlite3)。

也可以看看: