2011年3月25日

[pgsql-jp: 40721] Re:初めての投稿です。

鈴木です。

At Thu, 24 Mar 2011 23:21:36 +0900,
AKIHIKO ITO wrote:
>
> 教えていただけるのでしたら、お願いなのですが、7.3系のポスグレで、ひとつのテーブルの名前が、文字化けと思われる現象で、dropしたいのですが、selectする時点で、テーブル名 dose not existsになります。

テーブル名は pg_class テーブルの relname カラムに格納されていますので、

そこを UPDATE しちゃえば任意のテーブル名に変更できそうな気はします。


手元ですぐ試せる PostgreSQL 8.4 系で実験してみました。

この辺は 7.3 でも同じだったような【曖昧な】記憶がありますので、
実行は own risk で…

------------------------------------------------------------------------

■もとのテーブル名が test3
# SELECT * FROM test3;
id | hoge
----+------
1 | t
2 | f
(2 行)


■pg_class の relname を UPDATE
# SELECT oid,relname FROM pg_class ORDER BY relname;
(snip)
18653 | test
18659 | test3
(snip)


■test3 テーブルを test4 に変更。今回はテーブル名が使いにくそうなので oid を指定。
# ustream=# UPDATE pg_class SET relname = 'test4' WHERE oid = '18659';
UPDATE 1


■test4 で SELECT
# SELECT * FROM test4;
id | hoge
----+------
1 | t
2 | f
(2 行)


■test3 は存在しなくなり、SELECT はできない
# SELECT * FROM test3;
ERROR: relation "test3" does not exist
行 1: SELECT * FROM test3;

------------------------------------------------------------------------

;; ---------------------------------------------------------
;; 鈴木則夫 <suzuki@xxxxx>
;; トライコーン株式会社 http://www.tricorn.co.jp/
;; 160-0015 東京都新宿区大京町24 住友外苑ビル5F
;; Tel 03-5919-0041 Fax 03-5919-0042


投稿者 xml-rpc : 2011年3月25日 09:52
役に立ちました?:
過去のフィードバック 平均:(0) 総合:(0) 投票回数:(0)
本記事へのTrackback: http://hoop.euqset.org/blog/mt-tb2006.cgi/102763
トラックバック
コメント
コメントする




画像の中に見える文字を入力してください。