PostgreSQL
 sql >> Baza danych >  >> RDS >> PostgreSQL

Jak zmienić własność niektórych tabel w bazie danych z postgres na innego użytkownika?

Czy próbowałeś z anonymous code block ? Poniższy blok kodu wybiera wszystkie tabele ze schematu public należący do użytkownika postgres i ustaw własność na użytkownika 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; 
$$;

Pamiętaj, że ta operacja zmodyfikuje własność wszystkich tabel w twoim schemacie, który należy do danego użytkownika. Oczywiście możesz dalej filtrować te tabele, zmieniając pg_tables zapytanie w pętli. Spójrz na:

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

Używaj go ostrożnie!

EDYTUJ :Aby odfiltrować kilka tabel z powyższego wyboru, dodaj NOT IN , na przykład:

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



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. JPA – ustawianie właściwości klasy jednostki z kolumny obliczeniowej?

  2. PostgreSQL:UPDATE za pomocą funkcji agregującej

  3. Zmiana z SQLite na PostgreSQL w nowym projekcie Rails

  4. Zapytanie SQL, aby wybrać pary wartości w kolumnie 1, które pasują do jednego z dwóch wzorców w kolumnie 2

  5. Pobieranie informacji z jednego serwera Rails do drugiego