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

Какъв е най-добрият начин за сравняване / вмъкване / актуализиране на продукти в MySQL db от .CSV файл

Имахме подобна ситуация. След много опити да направим скрипта по-добър, решихме, че се нуждаем от друг подход, за да накараме импортирането ни да работи и да не отнеме ~10 часа.

Това, което направихме, беше да изхвърлим целия PHP код и вместо това да използваме mysqlimport за да заредите съдържанието на CSV файла директно в таблица. Тази таблица вече съдържа всичко, от което се нуждаем, но не във форма, която е полезна за нас (няма структура, някои полета се нуждаят от обработка и т.н.)

Въпреки това, тъй като всичко вече е в базата данни, можем да направим всичко, което искаме със заявка. Например, изтриването на всички данни, които вече не са във файла за импортиране, това е просто DELETE FROM structured_table AS st LEFT JOIN unstructured_table AS ut ON st.someField = ut.someField WHERE ut.someField IS NULL; , актуализирането на съществуващи записи е просто UPDATE structured_table AS st INNER JOIN unstructured_table AS ut ON st.someField = ut.someField SET st.anotherField = CONCAT(ut.aField, ' ', ut.yetAnotherField); .

Очевидно за сложен скрипт за импортиране вашите заявки ще бъдат по-сложни и ще ви трябват повече от тях. Може дори да се наложи да хвърлите някои съхранени процедури, за да извършите обработка на отделни полета. Но ако можете да приложите този подход, ще се окажете с процес, който може да обработва много данни и е много мащабируем.



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

  2. MySQL - Преброяване на две неща с различни условия

  3. С Laravel Migration, Как да промените типа данни на колона и да актуализирате съществуващите й данни, за да отговарят на новия тип данни, без да използвате необработени SQL заявки?

  4. Разлика между DataSource и ConnectionPoolDataSource

  5. Left Join превъзхожда Inner Join?