PostgreSQL
 sql >> Teknologi Basis Data >  >> RDS >> PostgreSQL

Mengganti nama beberapa kolom di PostgreSQL

Tidak ada pendekatan perintah tunggal. Jelas Anda bisa mengetik beberapa perintah untuk RENAME sendiri, tetapi izinkan saya melakukan beberapa perbaikan :) Seperti yang saya katakan di jawaban ini

Dalam kasus Anda, itu akan menjadi:

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;

Itu akan memberi Anda serangkaian string yang merupakan perintah SQL seperti:

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

Tidak perlu menggunakan table_schema di WHERE klausa jika tabel Anda berada di public skema. Ingat juga menggunakan fungsi quote_ident() -- baca jawaban asli saya untuk penjelasan lebih lanjut.

Sunting:

Saya telah mengubah kueri saya sehingga sekarang berfungsi untuk semua kolom dengan nama yang dimulai dengan garis bawah _ . Karena garis bawah adalah karakter khusus dalam pencocokan pola SQL, kita harus menghindarinya (menggunakan \ ) untuk benar-benar menemukannya.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Bagaimana cara menggunakan fungsi jendela untuk menentukan kapan harus melakukan tugas yang berbeda di Hive atau Postgres?

  2. Daftar semua kunci asing PostgreSQL

  3. Impor byte mentah sebagai byte mentah di R

  4. Apakah Django mengindeks kunci Autofield/ID di PostgreSQL?

  5. Stempel Waktu Terawal didukung di PostgreSQL