PostgreSQL
 sql >> база данни >  >> RDS >> PostgreSQL

Преименуване на множество колони в PostgreSQL

Няма единен команден подход. Очевидно можете да въведете няколко команди за RENAME от вас самите, но позволете ми да въведа известно подобрение:) Както казах в този отговор

Във вашия случай ще бъде:

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;

Това ще ви даде набор от низове, които са SQL команди като:

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

Няма нужда да използвате table_schema в WHERE клауза, ако вашата таблица е public схема. Също така не забравяйте да използвате функцията quote_ident() -- прочетете оригиналния ми отговор за повече обяснение.

Редактиране:

Промених заявката си, така че сега работи за всички колони с име, започващо с долна черта _ . Тъй като долната черта е специален знак в съпоставянето на SQL шаблони, трябва да я екранираме (използвайки \ ), за да го намерите наистина.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Връщане на нулеви индивидуални стойности с postgres tablefunc crosstab()

  2. Postgresql:вмъкване на стойност на колона от файл

  3. Как работи INTERSECT в PostgreSQL

  4. Свържете postgreSQL+postGIS докер контейнер от моята локална мрежа

  5. PostgreSQL psycopg2 връща кортеж от низове вместо кортеж от кортежи?