Also, don't forget to test for relkind = 'r'. My bad from before. Revised query is below.
SELECT 'ALTER TABLE ' || quote_ident(n.nspname) || '.' || quote_ident(c.relname) || ' ALTER COLUMN ' || quote_ident(a.attname) || ' TYPE varchar;' FROM pg_class c JOIN pg_namespace n ON n.oid = c.relnamespace JOIN pg_attribute a ON a.attrelid = c.oid JOIN pg_type t ON t.oid = a.atttypid WHERE t.typname = 'bpchar' AND c.relkind = 'r' AND n.nspname <> 'pg_catalog'; On Mon, Oct 6, 2014 at 6:18 PM, Jim Nasby <jim.na...@bluetreble.com> wrote: > On 10/6/14, 12:41 PM, hari.fu...@gmail.com wrote: > >> Melvin Davidson <melvin6...@gmail.com> writes: >> >> This query might work for you, but double check all result statements >>> first. >>> >>> SELECT 'ALTER TABLE ' || quote_ident(n.nspname) || '.' || >>> quote_ident(c.relname) >>> || ' ALTER COLUMN ' || quote_ident(a.attname) || ' TYPE varchar;' >>> FROM pg_class c >>> JOIN pg_namespace n ON n.oid = c.relnamespace >>> JOIN pg_attribute a ON a.attrelid = c.oid >>> JOIN pg_type t ON t.oid = a.atttypid >>> WHERE t.typname = 'char' >>> AND n.nspname <> 'pg_catalog'; >>> >> Make that "t.typname = 'bpchar'". >> >> Just a heads-up: each of those ALTER's will rewrite the table, so unless > your database is tiny this will be a slow process. There's ways to work > around that, but they're significantly more complicated. > > -- > Jim Nasby, Data Architect, Blue Treble > Data in Trouble? Get it in Treble! http://BlueTreble.com > > > > -- > Sent via pgsql-general mailing list (pgsql-general@postgresql.org) > To make changes to your subscription: > http://www.postgresql.org/mailpref/pgsql-general > -- *Melvin Davidson* I reserve the right to fantasize. Whether or not you wish to share my fantasy is entirely up to you.