[pgsql-jp: 37261] 改行コードの自動エスケープ
EBIHARA, Yuichiro
ebihara @ iplocks.co.jp
2006年 6月 20日 (火) 20:17:53 JST
こんにちは、海老原です。
ちょっとお知恵を拝借したく。
前提: PostgreSQL 7.2、及び7.3
あるテーブルのtext型の列には、改行コードを含む文字列が格納
されています。
iplocksdb=# create table test (value text);
CREATE TABLE
iplocksdb=# insert into test values('ABC\nabc\n123');
INSERT 156449 1
iplocksdb=# select value from test;
value
-------------
ABC
abc
123
(1 row)
このような値を「psqlから」SELECTしたときに、改行文字がエス
ケープされた状態で値を取得するのが目的です。
つまり次のような結果を得たいのです。
iplocksdb=# select replace(value, '\n', '\\n') from test;
replace
---------------
ABC\nabc\n123
(1 row)
これを全てのテーブル、全てのカラムについて常に適用したいので、
いちいちreplace関数を使いたくないのですが、何か良いアイディア
はありませんでしょうか。
psqlのオプションか何かをうまく使えれば非常にうれしいのですが。
最終的にやりたいことはpg_dumpやCOPYコマンドのようなデータエ
クスポートなのですが、いくつかの列をスキップしたり、列順を入
れ替えたりする必要があり、pg_dumpや7.2のCOPYでは対応できな
いため、頭を捻っているところです。
手間さえ惜しまなければ回避策は色々と考えられますので、適当な
フィルターでも作ろうかとは思っていますが、できることなら手を
抜きたいのです。
良い考えがあればぜひ教えて下さい。
--
海老原 雄一郎 / EBIHARA, Yuichiro
Email: ebihara @ iplocks.co.jp
pgsql-jp メーリングリストの案内