sql >> Databasteknik >  >> RDS >> PostgreSQL

Trunkering av alla tabeller i en Postgres-databas

FrustratedWithFormsDesigner är korrekt, PL/pgSQL kan göra detta. Här är manuset:

CREATE OR REPLACE FUNCTION truncate_tables(username IN VARCHAR) RETURNS void AS $$
DECLARE
    statements CURSOR FOR
        SELECT tablename FROM pg_tables
        WHERE tableowner = username AND schemaname = 'public';
BEGIN
    FOR stmt IN statements LOOP
        EXECUTE 'TRUNCATE TABLE ' || quote_ident(stmt.tablename) || ' CASCADE;';
    END LOOP;
END;
$$ LANGUAGE plpgsql;

Detta skapar en lagrad funktion (du behöver göra detta bara en gång) som du sedan kan använda så här:

SELECT truncate_tables('MYUSER');


  1. Hur man ansluter till Oracle 11-databasen från . netto

  2. ORDER BY-satsen är ogiltig i vyer, inline-funktioner, härledda tabeller, underfrågor och vanliga tabelluttryck

  3. Data Warehousing ETL-dataprofilering med Oracle Warehouse Builder

  4. Sammanfoga/sammanfoga matrisvärden under gruppering/aggregering