sql >> データベース >  >> RDS >> PostgreSQL

PostgreSQLデータベースからいくつかのテーブルを見つけて削除する方法

    これにより、上記のテーブルを削除するステートメントが作成され、 パターンに一致する他のオブジェクト。また、システムテーブルはありません。

    SELECT 'DROP TABLE ' || c.oid::regclass || ';'
    FROM   pg_class c
    JOIN   pg_namespace n ON n.oid = c.relnamespace  -- to restrict to a schema
    WHERE  c.relkind = 'r'                           -- only tables
    AND    c.relname ILIKE '%gtab%'                  -- pattern for table names
    AND    n.nspname = 'public'                      -- restrict to a schema
    ORDER  BY 1;
    

    regclassへのキャスト 必要に応じてテーブル名を自動的にエスケープしてスキーマ修飾し、SQLインジェクションに対して安全です。詳細:

    多くのテーブルの場合、単一の統合ステートメントの方が高速です。

    SELECT 'DROP TABLE ' || string_agg(c.oid::regclass::text, ', ') || ';'
    FROM   pg_class c
    JOIN   pg_namespace n ON n.oid = c.relnamespace
    WHERE  c.relkind = 'r'
    AND    c.relname ILIKE '%gtab%'
    AND    n.nspname = 'public'
    ORDER  BY 1;
    

    結果:

    DROP TABLE tbl1, tbl2, schema1.tbl3;
    

    関連する回答:



    1. PHP CodeIgniterを使用してCSVデータをMYSQLデータベースにインポートする方法は?

    2. 10分以内に連続したトランザクションを見つける

    3. ストアドプロシージャ内でデータベースを使用する

    4. SQLクエリのExcel日付パラメータ