sql >> Databasteknik >  >> RDS >> PostgreSQL

Byter namn på flera kolumner i PostgreSQL

Det finns inget enskilt kommando. Självklart kan du skriva flera kommandon för RENAME själv, men låt mig inducera en förbättring:) Som jag sa i det här svaret

I ditt fall skulle det vara:

SELECT
    'ALTER TABLE ' || tab_name || ' RENAME COLUMN '
    || quote_ident(column_name) || ' TO '
    || quote_ident( '_1' || column_name) || ';'
FROM (
    SELECT
        quote_ident(table_schema) || '.' || quote_ident(table_name) as tab_name,
        column_name
    FROM information_schema.columns  
    WHERE 
            table_schema = 'schema_name'
            AND table_name = 'table_name'
            AND column_name LIKE '\_%'
) sub;

Det ger dig en uppsättning strängar som är SQL-kommandon som:

ALTER TABLE  schema_name.table_name RENAME COLUMN "_settingA" TO "_1_settingA";
ALTER TABLE  schema_name.table_name RENAME COLUMN "_settingB" TO "_1_settingB";
...

Du behöver inte använda table_schema i WHERE klausul om din tabell är public schema. Kom också ihåg att använda funktionen quote_ident() -- läs mitt ursprungliga svar för mer förklaring.

Redigera:

Jag har ändrat min fråga så nu fungerar den för alla kolumner med namn som börjar med understreck _ . Eftersom understreck är specialtecken i SQL-mönstermatchning måste vi undkomma det (med \ ) för att faktiskt hitta den.



  1. MySQL Tutorial – Förstå sekunderna bakom Master Value

  2. Säkerhetskopiera vyer med Mysql Dump

  3. Kul med BULK INSERT SQL SERVER - typ inte matchar eller ogiltigt tecken för den angivna teckentabellen

  4. Bordet är fullt (med MEMORY-motor)