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

Как да импортирате повече от 100 000 записа в mysql база данни?

Съобщението за грешка е съвсем ясно и ви насочва към какъв е проблемът:ограничението на времето за изпълнение във вашата php среда. Така че някои подходи за решаване на това са очевидни:

  1. увеличете времевия лимит на вашата среда

Можете да направите това, като повишите ограничението във вашата php конфигурация или, ако е разрешено, като го увеличите динамично във вашия скрипт за импортиране. Така че нещо като ini_set('max_execution_time', 3000) . И двата варианта са документирани. PHP документацията трябва винаги бъде първото място, където трябва да започнете да търсите отговор на такъв въпрос.

  1. използвайте различна php среда

Обикновено такова ограничение се избира за уеб среда, за да се намалят рисковете от обслужване на заявки от всеки там. Нищо обаче не говори против използването на различна конфигурация за друга среда. Задачите за импортиране обикновено не обработвани чрез използване на уеб заявки, но чрез използване на php в командния ред (CLI). За такива обикновено се използва отделна конфигурация. Отново това е документирано. Това е, което можете да използвате тук, за да конфигурирате двете среди различни една от друга според вашите нужди. За това обаче ви трябва достъп до php на CLI. Това не е проблем във вашата собствена система, но обикновено не е достъпно в евтина уеб хостинг услуга.

  1. разделете импортирането си на по-малки части

Тъй като данните, които импортирате, се съхраняват в sql файл, т.е. обикновен текстов файл, можете да използвате всеки обикновен текстов редактор, за да промените този файл. Забележка:текстов редактор, не текстообработваща програма. Можете да разделите големия INSERT изявление, съдържащо се там на няколко части. Синтаксисът е доста очевиден.

  1. използвайте много отделни изрази за вмъкване вместо един голям

В зависимост от инструмента, който използвате, за да създадете дъмп файла, който се опитвате да импортирате, сега имате опция да създадете дъмп, така че да използва много отделни INSERT изявления (по един за всеки ред) вместо един голям, комбиниран. mysqldump например предлага --skip-extended-insert флаг за това. С такъв дъмп файл е тривиално да разделите импортирането на няколко по-малки части, като просто разделите файла.

  1. заобиколете напълно php за импортиране

Ако имате директен достъп до вашия сървър на база данни (MySQL в този случай), тогава можете просто да взаимодействате директно с него, вместо да използвате phpMyAdmin инструмент между тях. Можете просто да заредите вашия dumpfile директно чрез MySQLs source команда. По този начин сте напълно независими от ограниченията на php.



  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:\wamp\www\Website\storeadmin\admin_login.php..и същото за парола

  2. Разделете стойностите, разделени със запетая, на отделни редове

  3. PHP PDO не хвърля изключение при вмъкване на дублиран ключ

  4. WordPress Query:Подреждане по брой съвпадащи редове?

  5. Искате да поставите MySql ограничение за всяко условие where