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

Sử dụng libpqxx để lưu trữ dữ liệu hàng loạt HOẶC cách sử dụng câu lệnh COPY trong libpqxx

pushLog hàm cam kết mỗi lần chèn riêng biệt và cam kết chậm.

Như đã giải thích trong Điền cơ sở dữ liệu của tài liệu :

Ngoài ra:

Tuy nhiên, trong trường hợp của bạn, đó sẽ là một vấn đề hơn là một lợi ích, vì mỗi INSERT có thể không thành công khi vi phạm khóa chính, do đó sẽ hủy các INSERT trước đó kể từ lần cam kết cuối cùng. Lưu ý rằng đây cũng sẽ là một vấn đề với COPY , bạn có nên sử dụng cái đó không.

Vì thực sự cần thiết phải nhóm các truy vấn trong giao dịch để đạt hiệu suất, bạn cần phải xử lý các vi phạm khóa chính theo cách không hủy bỏ giao dịch.

Hai phương pháp thường được sử dụng:

  1. Tránh lỗi: INSERT INTO ... WHERE KHÔNG TỒN TẠI (CHỌN 1 TỪ bảng WHERE primary_key =...)

  2. Gỡ lỗi bằng cách chèn vào bên trong một hàm plpgsql có khối EXCEPTION bỏ qua nó. (Các) CHÈN cụ thể gây ra trùng lặp sẽ bị hủy nhưng giao dịch sẽ không bị hủy bỏ.

Nếu bạn chèn đồng thời, các phương pháp này cần được tinh chỉnh bằng chiến lược khóa.




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. MySQL:ALTER IGNORE TABLE đưa ra vi phạm ràng buộc về tính toàn vẹn

  2. Chèn nhiều giá trị thả xuống trong một hàng chứ không phải trong nhiều hàng

  3. Làm thế nào để bạn mô phỏng MySQL (không có ORM) trong Node.js?

  4. MySQL có khả năng chống lại cuộc tấn công SQL injection tốt hơn PostgreSQL (theo Perl / DBI) không?

  5. Cách loại bỏ lỗi MySQL 'Câu lệnh đã chuẩn bị cần được chuẩn bị lại'