PostgreSQL
 sql >> Baza danych >  >> RDS >> PostgreSQL

Zmiana nazwy wielu kolumn w PostgreSQL

Nie ma jednego podejścia do komendy. Oczywiście możesz wpisać wiele poleceń dla RENAME sam, ale pozwól mi wprowadzić pewną poprawę:) Jak powiedziałem w tej odpowiedzi

W twoim przypadku byłoby to:

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;

To da ci zestaw ciągów, które są poleceniami SQL, takimi jak:

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

Nie ma potrzeby używania table_schema w WHERE klauzula, jeśli twoja tabela jest public schemat. Pamiętaj też o użyciu funkcji quote_ident() -- przeczytaj moją oryginalną odpowiedź, aby uzyskać więcej wyjaśnień.

Edycja:

Zmieniłem zapytanie, więc teraz działa dla wszystkich kolumn, których nazwa zaczyna się od podkreślenia _ . Ponieważ podkreślenie jest znakiem specjalnym w dopasowaniu wzorca SQL, musimy go zmienić (używając \ ), aby go znaleźć.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Jak używać dowolnej klauzuli Postgres z zapytaniami natywnymi JPA/Hibernacja (parametry tablicowe)

  2. PostgreSQL - pobieranie elementów w kolejności ich przechowywania

  3. ustaw puste hasło dla użytkownika PostgreSQL

  4. Laravel Eloquent obcięty - ograniczenie klucza obcego

  5. Bufory (kółko) w PostGIS