PostgreSQL
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> PostgreSQL

Đổi tên nhiều cột trong PostgreSQL

Không có ứng dụng lệnh duy nhất. Rõ ràng là bạn có thể nhập nhiều dấu phẩy cho RENAME của bạn, nhưng hãy để tôi tìm ra một số cải tiến :) Như tôi đã nói trong câu trả lời này

Trong trường hợp của bạn, nó sẽ là:

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;

Điều đó sẽ cung cấp cho bạn một tập hợp các chuỗi là các lệnh SQL như:

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

Không cần sử dụng table_schema trong WHERE nếu bảng của bạn ở public lược đồ. Cũng nhớ sử dụng hàm quote_ident() - đọc câu trả lời ban đầu của tôi để được giải thích thêm.

Chỉnh sửa:

Tôi đã thay đổi truy vấn của mình nên bây giờ nó hoạt động cho tất cả các cột có tên bắt đầu bằng dấu gạch dưới _ . Vì dấu gạch dưới là ký tự đặc biệt trong đối sánh mẫu SQL, chúng ta phải thoát khỏi nó (sử dụng \ ) để tìm nó một cách thực tế.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Cách current_time hoạt động trong PostgreSQL

  2. Chọn dữ liệu cụ thể từ nội dung XML đã cho bằng cách sử dụng manh mối WHERE

  3. Nối các hàng trong Postgres

  4. Ràng buộc kiểm tra PostgreSQL cho điều kiện khóa ngoại

  5. Điền nhiều trường 2many (odoo 8)