No hay un enfoque de comando único. Obviamente, podría escribir varios comandos para RENAME
por su cuenta, pero déjeme introducir algunas mejoras :) Como dije en esta respuesta
En tu caso sería:
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;
Eso le dará un conjunto de cadenas que son comandos SQL como:
ALTER TABLE schema_name.table_name RENAME COLUMN "_settingA" TO "_1_settingA";
ALTER TABLE schema_name.table_name RENAME COLUMN "_settingB" TO "_1_settingB";
...
No es necesario usar table_schema
en WHERE
cláusula si su tabla está en public
esquema. También recuerda usar la función quote_ident()
-- lea mi respuesta original para obtener más explicaciones.
Editar:
Cambié mi consulta, por lo que ahora funciona para todas las columnas con un nombre que comienza con un guión bajo _
. Debido a que el guión bajo es un carácter especial en la coincidencia de patrones SQL, debemos escaparlo (usando \
) para encontrarlo.