Bạn đã thử với anonymous code block
chưa
? Khối mã này bên dưới chọn tất cả các bảng từ giản đồ public
thuộc về người dùng postgres
và đặt quyền sở hữu cho người dùng 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;
$$;
Hãy nhớ rằng thao tác này sẽ sửa đổi quyền sở hữu của tất cả các bảng trong lược đồ của bạn thuộc về người dùng nhất định. Rõ ràng là bạn có thể lọc thêm các bảng này bằng cách thay đổi pg_tables
truy vấn trong vòng lặp. Hãy xem:
SELECT * FROM pg_tables WHERE schemaname = 'public' AND tableowner = 'postgres';
Sử dụng nó một cách cẩn thận!
CHỈNH SỬA :Để lọc ra một vài bảng từ lựa chọn ở trên, hãy thêm NOT IN
, chẳng hạn như:
SELECT * FROM pg_tables
WHERE schemaname = 'public' AND tableowner = 'postgres'
AND tablename NOT IN ('table1','table2','table3')