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