Mysql
 sql >> база данни >  >> RDS >> Mysql

Използване на libpqxx за съхраняване на данни в насипно състояние ИЛИ как да използвате израз COPY в libpqxx

pushLog функцията записва всяко вмъкване поотделно и записването е бавно.

Както е обяснено в документацията Попълване на база данни :

Също така:

Във вашия случай обаче това би било по-скоро проблем, отколкото полза, тъй като всяко INSERT може да се провали при нарушение на първичния ключ, като по този начин анулира предишните INSERT след последното записване. Имайте предвид, че това също би било проблем с COPY , трябва ли да го използвате.

Тъй като наистина е необходимо да групирате заявките в транзакции за ефективност, трябва да се справите с нарушенията на първичния ключ по начин, който не прекъсва транзакцията.

Обикновено се използват два метода:

  1. Избягвайте грешката:INSERT IN... WHERE NOT EXISTS (SELECT 1 FROM table WHERE primary_key=...)

  2. Захванете грешката, като вмъкнете вътре във функция plpgsql, която има блок EXCEPTION, игнориращ itr. Конкретните INSERT(и), които причиняват дублиране, ще бъдат анулирани, но транзакцията няма да бъде прекратена.

Ако имате едновременни вмъквания, тези методи трябва да бъдат прецизирани със стратегия за заключване.




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Разрешения за потребителска роля за различни модули, използващи побитови оператори

  2. Потискайте предупредителните съобщения с помощта на mysql от терминала, но паролата е написана в bash скрипт

  3. Защо Eclipse предлага Обект като тип на съпоставяне по подразбиране за тип данни Текст?

  4. Spring Boot JPA:Подаване на множество стойности за един и същ параметър (JPQL)

  5. Заявка за избор на низове завършва с определен знак