[pgsql-jp: 26088] \i によるインポートで文字列リテラルのエスケープが正常に解釈されない

chi Chihiro_Kuraya @ virtems.com
2002年 5月 23日 (木) 17:46:09 JST


こんにちは、倉谷と申します。


RedHat Linux 6.2J 上で  PostgreSQL 7.1.3 を使用しております。

外部データベースの情報を SQL の INSERT 文のテキストとしてエクスポートした
ファイルがあります。以下にサンプルを載せます。
-----------------------------------------------------------------------
...
INSERT INTO project_bill ( project, id, content, amount, unit, unit_price )
VALUES ( '2001-01-17-01',1,'・NAB-DF Test Current Account',26,'p',1000);
INSERT INTO project_bill ( project, id, content, amount, unit, unit_price )
VALUES ( '2001-01-17-01',2,'・NAB-DF Test Foreign Ex',19,'p',1000);
INSERT INTO project_bill ( project, id, content, amount, unit, unit_price )
VALUES ( '2001-01-17-01',3,'・NAB-DF Summary',17,'-',1000);
...
-----------------------------------------------------------------------

このように INSERT 文が1万行ほど書かれたテキストファイルがあります。
このファイルを psql 上から \i コマンドによってインポートを行うと、
次のようなエラーが起きます。

psql:project-data.sql:8438: invalid command \
psql:project-data.sql:8440: ERROR:  parser: parse error at or near "2000"

該当する 8437行目以下は次のようになっております。
-----------------------------------------------------------------------
INSERT INTO project_bill ( project, id, content, amount, unit, unit_price )
VALUES ( '2000-10-01-01',1,'Page layout at \\850/page(hoge)',10,'ページ',850);
INSERT INTO project_bill ( project, id, content, amount, unit, unit_price )
VALUES ( '2000-10-01-01',2,'Page layout at \\800/page(foo)',200,'ページ',800);
-----------------------------------------------------------------------

どうも、文字列リテラル中の \\ が円マークとして解釈されていないようなのですが、
どうしてなのでしょうかね。PostgreSQL の仕様どおりの書き方をしているはずなのですが。。。

どなたか原因が分かる方がおりましたら、ご教授願えませんでしょうか。


---
倉谷智尋 <Chihiro_Kuraya @ virtems.com>



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