postgresqlビュースクリプトの再構築


環境;
psql (9.3.6)
  "help"  .
root=# \d change_me
           "public.change_me"
        |                    |   
-----------+-----------------------+--------
 too_short | character varying(50) | 
root=# ALTER TABLE change_me ALTER too_short TYPE VARCHAR(30);
 :   
 :    _RETURN     v_change_me   "too_short"

目的:too_を変更するshortタイプはVARCHAR(30)ここからビューv_change_私はこの表に依存する.
一、インストールスクリプト:
前提:psqlクライアントがインストールされている
プロジェクトアドレスhttps://github.com/Firxiao/pg_recreate_view 
#wget  https://raw.githubusercontent.com/Firxiao/pg_recreate_view/master/recreate_views.sh
#chmod +x recreate_views.sh

操作手順は次のとおりです.
二、構成スクリプト:
編集スクリプトは、次の内容を自分自身に変更して保存して終了します.
###config
HOST="ip or hostname"
DB_NAME="dbname"
DB_USER="user"
DB_PASSWORD="password"
###

三、ヘルプの表示
#./recreate_views.sh 
Useage: recreate_views.sh: -b <view_name> #backup view and dependent objects  
Useage: recreate_views.sh: -d <view_name> #delete view and dependent objects   
Useage: recreate_views.sh: -c  "<sql>"    #exec custom sql command   
Useage: recreate_views.sh: -r <view_name> #restore view and dependent objects

 
四、正常に接続できるかどうかをテストする
#./recreate_views.sh -c "\dt"
         List of relations
 Schema |   Name    | Type  | Owner 
--------+-----------+-------+-------
 public | change_me | table | root
(1 row)

五、バックアップビュー
#./recreate_views.sh -b  v_change_me
backup v_change_me to v_change_me_bak.sql
backup v_change_me_too to v_change_me_bak.sql

削除したビューと依存を自動的にビュー名にバックアップします.bak.sql
六、ビューの削除
#./recreate_views.sh -d  v_change_me
 :      v_change_me_too
DROP VIEW

テーブルフィールドタイプの変更
#./recreate_views.sh -c "ALTER TABLE change_me ALTER too_short TYPE VARCHAR(30);"
ALTER TABLE

七、削除したビューを復元する
#./recreate_views.sh -r  v_change_me
SET
SET
SET
SET
SET
SET
SET
 :    "v_change_me"  
SET
CREATE VIEW
SET
SET
SET
SET
SET
SET
SET
 :    "v_change_me_too"  
SET
CREATE VIEW

八、表タイプの表示
./recreate_views.sh -c "\d v_change_me"
           View "public.v_change_me"
  Column   |         Type          | Modifiers 
-----------+-----------------------+-----------
 too_short | character varying(30) |

これでテーブルフィールドタイプの変更が完了しました