sql >> Database >  >> RDS >> PostgreSQL

Hoe verander ik het eigendom van sommige tabellen in een database van postgres naar een andere gebruiker?

Heb je het geprobeerd met een anonymous code block ? Dit codeblok hieronder selecteert alle tabellen uit het schema public die toebehoort aan de gebruiker postgres en stel het eigendom in op de gebruiker user :

DO $$
DECLARE row RECORD;
BEGIN
 FOR row IN SELECT * FROM pg_tables 
            WHERE schemaname = 'public' AND tableowner = 'postgres' LOOP 
  EXECUTE FORMAT('ALTER TABLE %I.%I OWNER TO user',row.schemaname,row.tablename);
 END LOOP;
END; 
$$;

Houd er rekening mee dat deze bewerking het eigendom van alle tabellen zal wijzigen in uw schema dat bij de opgegeven gebruiker hoort. Uiteraard kunt u deze tabellen verder filteren door de pg_tables vraag in de lus. Kijk eens naar:

SELECT * FROM pg_tables WHERE schemaname = 'public' AND tableowner = 'postgres';

Gebruik het met zorg!

BEWERKEN :Voeg een NOT IN toe om een ​​paar tabellen uit de selectie hierboven te filteren , zoals:

SELECT * FROM pg_tables 
WHERE schemaname = 'public' AND tableowner = 'postgres'
AND tablename NOT IN ('table1','table2','table3')



  1. MySQL, beter om NULL of lege string in te voegen?

  2. SQL-uitzondering tijdens verbinding met SQL-server

  3. Is er een manier om een ​​aangepast type van C# door te geven aan Oracle met behulp van System.Data.OracleClient?

  4. Postgresql 9.2 pg_dump versie komt niet overeen