sql >> Database teknologi >  >> RDS >> PostgreSQL

Omdøbning af flere kolonner i PostgreSQL

Der er ingen enkelt kommando tilgang. Du kan selvfølgelig skrive flere kommandoer for RENAME af dig selv, men lad mig inducere nogle forbedringer:) Som jeg sagde i dette svar

I dit tilfælde ville det være:

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 vil give dig et sæt strenge, som er SQL-kommandoer 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";
...

Der er ingen grund til at bruge table_schema i WHERE klausul, hvis din tabel er public skema. Husk også at bruge funktionen quote_ident() -- læs mit originale svar for mere forklaring.

Rediger:

Jeg har ændret min forespørgsel, så den nu fungerer for alle kolonner med navn, der begynder med understregning _ . Fordi understregning er specialtegn i SQL-mønstermatching, skal vi undslippe det (ved at bruge \ ) for rent faktisk at finde det.



  1. Spørgsmålstegn operator i forespørgsel

  2. Hvordan opretter man tabel ved hjælp af sqlite-database i Android?

  3. Bruger case, når du skal indsætte værdier

  4. Mysql:Optimering af at finde super node i indlejret sættræ