【问题标题】:Difference between psql command and psql interactive terminalpsql命令和psql交互终端的区别
【发布时间】:2020-07-08 19:44:44
【问题描述】:

我尝试了各种搜索词组合,但找不到答案...

我是 Postgres 的新手,我喜欢使用 psql 交互式终端来运行 SQL 命令。但是当我经常查找时,我发现有人使用psql 作为命令而不是终端。

例如,您可以使用以下命令恢复数据库:

psql database-name < path/to/backup.dmp

我的问题是,它们是相同的东西还是不同的东西?当我将psql 作为独立命令运行时,我是否有效地为那个命令运行了一个交互式终端?如果是这样,这是否意味着psql 之后的任何内容也将作为输入到 psql 终端的命令工作?所以在上面的例子中,我也可以只启动一个 psql 终端,然后运行以下命令?

postgres=# database-name < path/to/backup.dmp

【问题讨论】:

  • 要从 within psql 运行文件,您需要使用\i

标签: postgresql psql


【解决方案1】:

这实际上是基本的bash 东西。您应该阅读 Unix shell 以更好地理解这一点。

每个进程都有一个标准输入、一个标准输出和一个标准错误。 默认情况下,您启动程序的交互式终端将用于这些,因此您键入的文本将是程序的输入,程序的输出将显示在您的屏幕上。

你也可以重定向标准输入

command < file

那么程序的输入将来自file,而不是来自交互式终端。

这是 Unix 的理念之一:用户只是另一个文件,您可以从中读取和写入。

所以&lt; 之前的所有内容都是命令调用的一部分,&lt; 之后的所有内容都是要读取的文件。

如果您想在psql 交互式会话中读取并执行 SQL 脚本,请使用

\i file.sql

【讨论】:

    猜你喜欢
    • 2012-02-17
    • 1970-01-01
    • 2017-07-07
    • 1970-01-01
    • 2023-03-14
    • 1970-01-01
    • 2015-06-18
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多