[pgsql-jp: 26832] psql -e hoge_db < fuga.pgsql

Tadashi Oh-Ya toy @ k-cable.co.jp
2002年 7月 27日 (土) 20:01:17 JST


おおやと申します。
Debian GNU/Linux(Potato)でPostgreSQL 6.5.7 を使用しています。
文字コードにはEUCを使用しています。

  psql -e hoge_db < fuga.create.pgsql (DROP と CREATE)
  psql -e hoge_db < fuga.insert.pgsql (INSERT)

という方法でSQL文を実行するときに、「あるSQL文以降が実行され
ずに、EOFの表示まで流れてしまう。」という状況が発生してしまい、
戸惑っております。


fuga.insert.pgsqlの中身は、
-----------------------------------------------------------------
INSERT文
INSERT文
...

// 問題のINSERT文その1
INSERT INTO columns_of_tables VALUES (
  'columns_of_tables',
  'allow_perm',
  '許可ログインレベル',
  'admin:7',
  ''
);

INSERT文
INSERT文
...

// 問題のINSERT文その2
INSERT INTO position_info (
  position_code,
  position_name,
  position_alias,
  position_start,
  adrs_postal,
  up_link
) VALUES (
  'cd7bf769ebef134ab08deb39a8f1507e',
  'ParadiseEnd',
  '南の楽園の果ての果て',
  '1972-08-02',
  '900-0000',
  'root'
);

INSERT文
INSERT文
...
-----------------------------------------------------------------
上記のようにINSERT文が複数記述されているものになります。

'psql -e hoge_db < fuga.insert.pgsql'を実行して、「問題のINSERT文
その1」まで来ると、画面に経過の表示はされ続けるのですが、実際には
実行されなくなり、そのまま EOF の表示まで流れてしまいます。

「問題のINSERT文その1」を削除すると、問題のINSERT文その2の直前ま
では実行され「問題のINSERT文その2」を含めて、以降まったく実行され
なくなり、そのまま EOF の表示まで流れます。
「問題のINSERT文その1」「問題のINSERT文その2」をfuga.insert.pgsql
の中から削除してから実行すると、問題なく実行できます。

「その1」「その2」を別々にファイルにして
  psql -e hoge_db < trouble_1.pgsql
  psql -e hoge_db < trouble_2.pgsql
とすると、まったく実行されずにそのまま EOF の表示がされます。

奇妙なことに、「その1」と「その2」を1つのファイルにまとめて
  psql -e hoge_db < trouble.pgsql
とすると、問題無く実行できてしまいます。


最終的には、全てのINSERT文を実行できましたので、問題無いと言え
ば問題無いのですが、やはり気になります。
どなたか理由がおわかりになる方はいらっしゃいますでしょうか。



pgsql-jp メーリングリストの案内