Non esiste un unico comando di approccio. Ovviamente puoi digitare più comandi per RENAME
da solo, ma lasciami introdurre qualche miglioramento :) Come ho detto in questa risposta
Nel tuo caso sarebbe:
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;
Questo ti darà un set di stringhe che sono comandi SQL come:
ALTER TABLE schema_name.table_name RENAME COLUMN "_settingA" TO "_1_settingA";
ALTER TABLE schema_name.table_name RENAME COLUMN "_settingB" TO "_1_settingB";
...
Non è necessario utilizzare table_schema
in WHERE
clausola se la tua tabella è in public
schema. Ricorda anche di usare la funzione quote_ident()
-- leggi la mia risposta originale per ulteriori spiegazioni.
Modifica:
Ho cambiato la mia query, quindi ora funziona per tutte le colonne il cui nome inizia con underscore _
. Poiché il carattere di sottolineatura è un carattere speciale nella corrispondenza del modello SQL, dobbiamo eseguire l'escape (usando \
) per trovarlo effettivamente.