sql >> Databáze >  >> RDS >> Mysql

Jak importovat více než 100 000 záznamů do databáze mysql?

Chybová zpráva je zcela jasná a ukazuje vám, v čem je problém:omezení doby provádění ve vašem prostředí php. Některé přístupy k řešení jsou tedy zřejmé:

  1. zvyšte časový limit vašeho prostředí

Můžete to udělat buď zvýšením limitu v konfiguraci php, nebo, je-li to povoleno, jeho dynamickým zvýšením ve vašem importovacím skriptu. Takže něco jako ini_set('max_execution_time', 3000) . Obě možnosti jsou zdokumentovány. Dokumentace php by měla vždy být prvním místem, kde byste měli začít hledat odpověď na takovou otázku.

  1. použijte jiné prostředí php

Obvykle se takové omezení volí pro webové prostředí, aby se snížilo riziko obsluhy požadavků od kohokoli tam venku. Nic však nemluví proti použití jiné konfigurace pro jiné prostředí. Úlohy importu obvykle nejsou zpracovávány pomocí webových požadavků, ale pomocí php v příkazovém řádku (CLI). K tomu se obvykle používá samostatná konfigurace. Opět je to zdokumentováno. To je to, co zde můžete použít ke konfiguraci obou prostředí, která se od sebe liší podle vašich potřeb. K tomu však potřebujete přístup k php na CLI. To není problém na vašem vlastním systému, ale obvykle není k dispozici na levné webhostingové službě.

  1. rozdělte import na menší části

Vzhledem k tomu, že importovaná data jsou uložena v souboru sql, tedy v jednoduchém textovém souboru, můžete tento soubor upravit pomocí libovolného běžného textového editoru. Poznámka:textový editor, ne textový procesor. Velký INSERT můžete rozdělit prohlášení v něm obsažené na několik kousků. Syntaxe je zcela jasná.

  1. použijte mnoho samostatných příkazů vložení namísto jednoho velkého

V závislosti na nástroji, který používáte k vytvoření souboru výpisu, který se pokoušíte importovat, máte nyní možnost vytvořit výpis tak, aby používal mnoho samostatných INSERT příkazy (jeden pro každý řádek) namísto jednoho velkého kombinovaného. mysqldump například nabízí --skip-extended-insert vlajka za to. U takového souboru výpisu je triviální rozdělit import na několik menších částí pouhým rozdělením souboru.

  1. pro import úplně obejít php

Pokud máte přímý přístup k vašemu databázovému serveru (v tomto případě MySQL), můžete s ním jednoduše komunikovat přímo namísto použití phpMyAdmin nástroj mezi tím. Soubor s výpisem paměti můžete jednoduše načíst přímo pomocí source MySQL příkaz. Tímto způsobem jste zcela nezávislí na omezeních php.



  1. PHP - předání skryté hodnoty do jquery

  2. Změny skupiny parametrů se neodrážejí v clusteru Aurora Serverless DB

  3. Maximální skutečný prostor ve varbinary(max) na serveru SQL Server

  4. laravel 5.6 hromadné vkládání dat json