Found this a few minutes ago and already lost the source URL. With PostgreSQL requiring you to add data manipulation privileges on a table-by-table basis, it’s handy to have a method to spit out a list of GRANT commands to run when you want to give a user a privilege across the entire database.
SELECT 'GRANT SELECT ON '||schemaname||'.'||tablename||' TO fillinusername;' 
FROM pg_tables 
WHERE schemaname IN ('fillindatabasename', 'fillinschema') 
ORDER BY schemaname, tablename; 
In the above, you need to change:
- fillinusername: The username you wish to grant privileges to.
- fillindatabasename: The database within which you will be granting table privileges upon.
- fillinschema: The schema the tables are contained within (usually “public”).
This will spit out a list like:
                                  ?column?
-----------------------------------------------------------------------------
 GRANT SELECT ON fillinschema.table1 TO fillinusername;
 GRANT SELECT ON fillinschema.table2 TO fillinusername;
 GRANT SELECT ON fillinschema.table3 TO fillinusername;
 GRANT SELECT ON fillinschema.table4 TO fillinusername;
 GRANT SELECT ON fillinschema.table5 TO fillinusername;
 ...
Copy and paste that list back into PostgreSQL to execute the GRANT commands to get your user privileges set up. (If it’s a large list, output the command to a file and run them that way.)