33 lines
1.1 KiB
SQL
33 lines
1.1 KiB
SQL
DO $$
|
|
DECLARE
|
|
r RECORD;
|
|
BEGIN
|
|
FOR r IN
|
|
SELECT table_schema, table_name, column_name
|
|
FROM information_schema.columns
|
|
WHERE table_schema = 'public'
|
|
AND column_name <> lower(column_name)
|
|
ORDER BY table_name, column_name
|
|
LOOP
|
|
-- Skip if a lowercase version already exists to avoid collisions.
|
|
IF EXISTS (
|
|
SELECT 1
|
|
FROM information_schema.columns c
|
|
WHERE c.table_schema = r.table_schema
|
|
AND c.table_name = r.table_name
|
|
AND c.column_name = lower(r.column_name)
|
|
) THEN
|
|
RAISE NOTICE 'Skip %.%: % -> % (target exists)', r.table_name, r.column_name, r.column_name, lower(r.column_name);
|
|
ELSE
|
|
EXECUTE format(
|
|
'ALTER TABLE %I.%I RENAME COLUMN %I TO %I',
|
|
r.table_schema,
|
|
r.table_name,
|
|
r.column_name,
|
|
lower(r.column_name)
|
|
);
|
|
RAISE NOTICE 'Renamed %.%: % -> %', r.table_name, r.column_name, r.column_name, lower(r.column_name);
|
|
END IF;
|
|
END LOOP;
|
|
END $$;
|