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

Cập nhật hàng loạt / hàng loạt / nâng cấp trong PostgreSQL

Chèn hàng loạt

Bạn có thể sửa đổi chèn hàng loạt ba cột bằng @Ketema:

INSERT INTO "table" (col1, col2, col3)
  VALUES (11, 12, 13) , (21, 22, 23) , (31, 32, 33);

Nó trở thành:

INSERT INTO "table" (col1, col2, col3)
  VALUES (unnest(array[11,21,31]), 
          unnest(array[12,22,32]), 
          unnest(array[13,23,33]))

Thay thế các giá trị bằng trình giữ chỗ:

INSERT INTO "table" (col1, col2, col3)
  VALUES (unnest(?), unnest(?), unnest(?))

Bạn phải chuyển các mảng hoặc danh sách làm đối số cho truy vấn này. Điều này có nghĩa là bạn có thể thực hiện chèn số lượng lớn mà không cần nối chuỗi (và tất cả các rắc rối và nguy hiểm của nó:chèn sql và trích dẫn địa ngục).

Cập nhật hàng loạt

PostgreSQL đã thêm phần mở rộng FROM vào UPDATE. Bạn có thể sử dụng nó theo cách này:

update "table" 
  set value = data_table.new_value
  from 
    (select unnest(?) as key, unnest(?) as new_value) as data_table
  where "table".key = data_table.key;

Hướng dẫn sử dụng thiếu phần giải thích hay, nhưng có một ví dụ về danh sách gửi thư postgresql-admin. Tôi đã cố gắng giải thích thêm về nó:

create table tmp
(
  id serial not null primary key,
  name text,
  age integer
);

insert into tmp (name,age) 
values ('keith', 43),('leslie', 40),('bexley', 19),('casey', 6);

update tmp set age = data_table.age
from
(select unnest(array['keith', 'leslie', 'bexley', 'casey']) as name, 
        unnest(array[44, 50, 10, 12]) as age) as data_table
where tmp.name = data_table.name;
 

Ngoài ra còn có các bài đăng khác trên StackExchange giải thích về UPDATE...FROM.. sử dụng VALUES mệnh đề thay vì một truy vấn con. Chúng có thể dễ đọc hơn, nhưng bị hạn chế ở một số hàng cố định.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Tổng quan về các thay đổi chỉ mục trong PostgreSQL 11

  2. Tự cấp phép tài khoản người dùng trong PostgreSQL thông qua quyền truy cập ẩn danh không đặc quyền

  3. Làm cách nào để tùy chỉnh tệp cấu hình của hình ảnh PostgreSQL Docker chính thức?

  4. Tìm tên máy chủ và cổng bằng lệnh PSQL

  5. Trình tự PostgreSQL dựa trên một cột khác