我尝试过各种搜索词的组合,但我找不到答案.
我是Postgres的新手,我喜欢使用psql交互式终端运行SQL命令。但是当我查找东西时,我经常发现人们使用psql作为命令而不是终端。
例如,可以使用以下命令还原数据库:
psql database-name < path/to/backup.dmp我的问题是,它们是相同的还是不同的?当我以独立命令的形式运行psql时,我是否有效地运行了一个交互终端?如果是这样的话,这是否意味着在psql之后的任何内容也会作为输入psql终端的命令工作呢?因此,在上面的示例中,我也可以启动psql终端,然后运行以下命令?
postgres=# database-name < path/to/backup.dmp发布于 2020-07-08 11:44:44
这实际上是基本的bash内容。为了更好地理解这一点,您应该阅读Unix。
每个进程都有一个标准输入、一个标准输出和一个标准错误。默认情况下,启动程序的交互终端将用于这些,因此您键入的文本将是程序的输入,程序的输出将显示在屏幕上。
也可以重定向标准输入
command < file然后,程序的输入将从file而不是从交互式终端获取。
这是Unix中的一个想法:用户只是另一个可以读取和写入的文件。
因此,<之前的所有内容都是命令调用的一部分,而<之后的所有内容都是要读取的文件。
如果希望在psql交互式会话中读取和执行SQL脚本,请使用
\i file.sqlhttps://stackoverflow.com/questions/62792473
复制相似问题