> Hi there,
> 
> I have dozens of tables where I need to rename one column in each of these. 
> Is there any generic way to do that?
> I am not really familiar with the scripting possibilities of Postgres.
> 
> Thanks a lot for your help!
> 
> Stefan
> 
> 
> You can do with script. I made one on fly for this, other's might have more 
> polished version. 
> 
> -bash-4.1$ more rename.sh
> #!/bin/bash
> OLDCOLUMN=aa
> NEWCOLUMN=a
> for i in $(psql -t -c "select table_schema||'.'||table_name from 
> information_schema.tables where table_schema='public';")
> do
>   /opt/PostgreSQL/9.3/bin/psql -p 5432 -U postgres -c "alter table $i rename 
> column $OLDCOLUMN to $NEWCOLUMN;"
> done
> 
> Replace the port,user,OLDCOLUMN, NEWCOLUMN and SCHEMA according to your 
> requirement. 
> 
> One more way from command line
> 
> -bash-4.1$ OLDCOLUMN=xyz
> -bash-4.1$ NEWCOLUMN=abc
> -bash-4.1$ psql -c "select 'alter table '||table_schema||'.'||table_name||' 
> rename column $OLDCOLUMN to $NEWCOLUMN;' from information_schema.tables where 
> table_schema='public';" | psql

Thanks so much. I had to add the database user and database name:

psql -U XXX -c "select 'alter table '||table_schema||'.'||table_name||' rename 
column $OLDCOLUMN to $NEWCOLUMN;' from information_schema.tables where 
table_schema='gis';" my_database | psql -U XXX my_database

and still run in an error. But it renamed quite a bunch of the tables. So, very 
good!

Stef

Reply via email to