Sudahkah Anda mencoba dengan anonymous code block
? Blok kode di bawah ini memilih semua tabel dari skema public
yang merupakan milik pengguna postgres
dan atur kepemilikan menjadi pengguna 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;
$$;
Ingatlah bahwa operasi ini akan mengubah kepemilikan semua tabel dalam skema Anda yang dimiliki oleh pengguna tertentu. Jelas Anda dapat memfilter lebih lanjut tabel ini dengan mengubah pg_tables
permintaan dalam lingkaran. Lihat di:
SELECT * FROM pg_tables WHERE schemaname = 'public' AND tableowner = 'postgres';
Gunakan dengan hati-hati!
EDIT :Untuk memfilter beberapa tabel dari pilihan di atas tambahkan NOT IN
, seperti:
SELECT * FROM pg_tables
WHERE schemaname = 'public' AND tableowner = 'postgres'
AND tablename NOT IN ('table1','table2','table3')