1

我在 Linux 上使用一个古老的库存控制应用程序。它只能打印到文本文件以与其他软件进行通信。当我需要更新我一直在使用的 PostgreSQL 数据库中的表时psql -f text_file(我们的旧应用程序生成的 SQL 命令文件在哪里text_file)这工作正常但相当慢,因为 psql 会话在完成每个文本文件后终止。我想知道是否有调用 psql 会话作为等待输入并且不终止的后台进程的方法。

4

2 回答 2

3

如果你想对你的数据库运行一堆 sql 文件,一个接一个,我将psql作为交互式控制台启动:

psql mydatabase

并使用\i 命令一个接一个地执行一个文件:

\i text_file

如果您想编写脚本/自动化事情,fifo可能是您所需要的。我在这里写了更多关于它的内容

或者您可能对Craig Ringer 描述的协同过程感兴趣。

于 2012-05-05T14:58:30.573 回答
1

我不确定你想要什么。如果您只有一堆需要处理的文件,请使用:

cat *.sql | psql -f -

如果您只是想持续运行 psql 并让它运行文件中的任何更改,那么可能会起作用:

(   
while sleep 5; do
  print "\i sql_file.sql;"
  cat /dev/null > sql_file.sql
done
) | psql --file -

我不确定这是多么可取,我自己从来没有做过。

于 2012-05-05T13:56:07.057 回答