1

Linux で古い在庫管理アプリケーションを使用しています。他のソフトウェアと通信するために、テキスト ファイルにのみ印刷できます。使用している PostgreSQL データベースのテーブルを更新する必要がある場合psql -f text_file(text_file古いアプリケーションによって生成された SQL コマンドのファイルはどこにありますか) これは正常に機能しますが、各テキスト ファイルの完了後に psql セッションが終了するため、かなり遅くなります。入力を待って終了しないバックグラウンドプロセスとしてpsqlセッションを呼び出す方法があるかどうか疑問に思っていました。

4

2 に答える 2

3

データベースに対して一連の sql ファイルを次々に実行する場合は、psql対話型コンソールとして起動します。

psql mydatabase

\i コマンドを使用して、ファイルを 1 つずつ実行します。

\i text_file

物事をスクリプト化/自動化したい場合は、fifoが必要になるかもしれません。私はそれについてもっと書いた here .

または、 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 に答える