{"id":6741,"date":"2013-02-13T19:27:03","date_gmt":"2013-02-13T18:27:03","guid":{"rendered":"http:\/\/xlogic.org\/blog\/?p=6741"},"modified":"2023-12-29T16:43:10","modified_gmt":"2023-12-29T15:43:10","slug":"come-importare-database-mysql-di-grosse-dimensioni-con-phpmyadmin","status":"publish","type":"post","link":"https:\/\/xlogic.org\/blog\/come-importare-database-mysql-di-grosse-dimensioni-con-phpmyadmin.html\/","title":{"rendered":"Come importare database MySQL grandi con phpMyAdmin"},"content":{"rendered":"<p>Per <strong>importare database grandi con phpMyAdmin<\/strong> bisogna considerare i limiti di caricamento PHP, il tempo massimo di esecuzione e la memoria disponibile. Quando il dump supera tali limiti, ripetere l\u2019upload non risolve il problema: conviene usare un file compresso, una directory di importazione configurata dal provider oppure la riga di comando.<\/p>\n<p>Prima di qualsiasi importazione crea un backup del database di destinazione. Un file SQL pu\u00f2 contenere comandi <code>DROP<\/code>, <code>TRUNCATE<\/code> o <code>DELETE<\/code> e sovrascrivere dati esistenti.<\/p>\n<h2>Controlli preliminari sul file SQL<\/h2>\n<p>Verifica che il dump provenga da una fonte affidabile, che il download sia completo e che la sua dimensione sia plausibile. Se il fornitore pubblica un checksum, confrontalo. Non aprire e salvare un dump molto grande con un editor che potrebbe troncarlo o modificarne la codifica.<\/p>\n<h3>Compatibilit\u00e0 di versione e motore<\/h3>\n<p>Controlla versione di MySQL o MariaDB, motori delle tabelle, charset e collation. Un dump generato su una versione pi\u00f9 recente pu\u00f2 contenere sintassi o collazioni non disponibili sul server di destinazione. Gli errori vanno corretti in base al messaggio preciso, non con sostituzioni globali casuali.<\/p>\n<h3>Database vuoto o database esistente<\/h3>\n<p>Decidi se l\u2019importazione deve creare una copia nuova o sostituire dati. Per una migrazione completa \u00e8 pi\u00f9 sicuro importare in un database vuoto e testare l\u2019applicazione. Se devi lavorare su un database esistente, conserva un export immediatamente ripristinabile.<\/p>\n<h2>1. Verificare il limite mostrato da phpMyAdmin<\/h2>\n<p>Apri il database corretto e seleziona la scheda <strong>Importa<\/strong>. L\u2019interfaccia mostra normalmente la dimensione massima consentita. Il valore dipende almeno da <code>upload_max_filesize<\/code>, <code>post_max_size<\/code>, <code>memory_limit<\/code> e <code>max_execution_time<\/code>; <code>post_max_size<\/code> deve essere superiore a <code>upload_max_filesize<\/code>.<\/p>\n<p>Su hosting condiviso questi parametri possono essere gestiti dal provider. Non tutti sono modificabili tramite <code>.htaccess<\/code> o file locali e una direttiva non supportata pu\u00f2 causare un errore del sito.<\/p>\n<p>La documentazione ufficiale elenca le alternative nella <a href=\"https:\/\/docs.phpmyadmin.net\/en\/latest\/faq.html\" target=\"_blank\" rel=\"noopener\">FAQ di phpMyAdmin sui dump grandi<\/a>.<\/p>\n<h2>2. Comprimere il dump SQL<\/h2>\n<p>phpMyAdmin pu\u00f2 importare formati compressi supportati dal server, come <code>.sql.gz<\/code>. La compressione riduce i dati trasferiti via browser, ma non elimina i limiti di esecuzione e memoria durante la decompressione e l\u2019esecuzione delle query.<\/p>\n<pre><code>gzip -9 backup.sql<\/code><\/pre>\n<p>Conserva anche una copia originale o verifica l\u2019archivio prima di cancellarla. Se il file compresso rientra nel limite, selezionalo dalla scheda Importa lasciando il formato SQL.<\/p>\n<h2>3. Importare correttamente da phpMyAdmin<\/h2>\n<ol>\n<li>seleziona il database di destinazione;<\/li>\n<li>apri <strong>Importa<\/strong>;<\/li>\n<li>scegli il file <code>.sql<\/code> o compresso;<\/li>\n<li>mantieni il set di caratteri coerente con il dump;<\/li>\n<li>abilita l\u2019importazione parziale solo se necessario e se sai come riprendere;<\/li>\n<li>avvia il processo senza chiudere la scheda;<\/li>\n<li>leggi il messaggio finale e non presumere che un upload concluso equivalga a un\u2019importazione completa.<\/li>\n<\/ol>\n<p>La procedura base \u00e8 descritta nella guida ufficiale a <a href=\"https:\/\/docs.phpmyadmin.net\/en\/latest\/import_export.html\" target=\"_blank\" rel=\"noopener\">importazione ed esportazione di phpMyAdmin<\/a>.<\/p>\n<h2>4. Usare la directory UploadDir del server<\/h2>\n<p>Un amministratore pu\u00f2 configurare in phpMyAdmin una directory server-side dedicata alle importazioni. Il file viene caricato con SFTP o File Manager in una posizione non pubblica e poi selezionato dall\u2019interfaccia, evitando il trasferimento HTTP del browser.<\/p>\n<p>Questa funzione deve essere predisposta e protetta dal provider. Non creare autonomamente una cartella con dump SQL dentro <code>public_html<\/code>: il database potrebbe essere scaricato da terzi e contenere password hash, dati personali, chiavi o configurazioni.<\/p>\n<h2>5. Importare con WP-CLI su un sito WordPress<\/h2>\n<p>Se hai accesso SSH e il database appartiene a WordPress, WP-CLI legge le credenziali da <code>wp-config.php<\/code>:<\/p>\n<pre><code>cd \/percorso\/del\/sito\nwp db export backup-prima-import.sql\nwp db import nuovo-database.sql<\/code><\/pre>\n<p>Il comando non crea il database e applica esattamente le istruzioni presenti nel file. Verifica percorso, database configurato e backup prima di confermare. La sintassi aggiornata \u00e8 disponibile nella documentazione di <a href=\"https:\/\/developer.wordpress.org\/cli\/commands\/db\/import\/\" target=\"_blank\" rel=\"noopener\">wp db import<\/a>.<\/p>\n<h3>Importare un dump compresso con WP-CLI<\/h3>\n<p>Decomprimi il file in una directory privata con spazio sufficiente e poi importalo. Evita di lasciare la copia SQL nella document root:<\/p>\n<pre><code>gunzip -k backup.sql.gz\nwp db import backup.sql<\/code><\/pre>\n<p>Al termine elimina in modo sicuro i file temporanei soltanto dopo aver verificato il sito e conservato il backup necessario.<\/p>\n<h2>6. Usare il client MySQL dalla shell<\/h2>\n<p>Per database non WordPress o ambienti amministrati puoi usare il client MySQL:<\/p>\n<pre><code>mysql --default-character-set=utf8mb4 -u NOME_UTENTE -p NOME_DATABASE &lt; backup.sql<\/code><\/pre>\n<p>La password viene richiesta in modo interattivo. Evita di inserirla direttamente nella riga di comando, perch\u00e9 pu\u00f2 rimanere nella cronologia o comparire nell\u2019elenco dei processi. Per un file compresso:<\/p>\n<pre><code>gunzip -c backup.sql.gz | mysql --default-character-set=utf8mb4 -u NOME_UTENTE -p NOME_DATABASE<\/code><\/pre>\n<p>Su grandi importazioni \u00e8 preferibile eseguire il comando in una sessione stabile e monitorare spazio disco, connessioni ed eventuali errori.<\/p>\n<h2>7. Dividere un dump: quando farlo<\/h2>\n<p>Spezzare un file SQL manualmente \u00e8 rischioso: una divisione nel mezzo di una query, di una stringa o di un blocco pu\u00f2 rendere le parti inutilizzabili. Se non hai shell, chiedi al provider un\u2019importazione assistita o genera pi\u00f9 file gi\u00e0 in fase di esportazione, separando tabelle o gruppi coerenti.<\/p>\n<p>Per WordPress, importa prima struttura e dati tenendo conto delle dipendenze. Tabelle molto grandi come log, sessioni o statistiche potrebbero non essere indispensabili, ma vanno escluse solo dopo aver verificato il plugin che le usa.<\/p>\n<h2>Perch\u00e9 evitare vecchi script di importazione PHP<\/h2>\n<p>Strumenti storici caricati nel sito promettono di eseguire il dump a blocchi, ma possono essere abbandonati, incompatibili o accessibili pubblicamente. Uno script che contiene credenziali del database e accetta file SQL costituisce un bersaglio critico se resta online.<\/p>\n<p>Preferisci phpMyAdmin mantenuto dal provider, WP-CLI, il client MySQL o l\u2019assistenza tecnica. Se usi eccezionalmente uno strumento temporaneo, verifica provenienza e compatibilit\u00e0, limita l\u2019accesso e rimuovi subito script, dump e credenziali al termine.<\/p>\n<h2>Errori frequenti e diagnosi<\/h2>\n<h3>413 Request Entity Too Large<\/h3>\n<p>Il server web o un proxy rifiuta il corpo della richiesta prima che phpMyAdmin lo elabori. Riduci la dimensione con compressione oppure usa shell o UploadDir; modificare soltanto PHP potrebbe non bastare.<\/p>\n<h3>Maximum execution time exceeded<\/h3>\n<p>L\u2019importazione ha superato il tempo consentito. Non dare per scontato che il database sia vuoto: alcune query possono essere state eseguite. Ripristina il backup o riparti da un database pulito con un metodo adatto ai processi lunghi.<\/p>\n<h3>Unknown collation<\/h3>\n<p>La destinazione non riconosce una collation presente nel dump. La soluzione migliore \u00e8 usare versioni compatibili o esportare con una collation supportata. Una sostituzione testuale \u00e8 possibile soltanto dopo aver capito l\u2019impatto su confronti e ordinamento.<\/p>\n<h3>Packet too large<\/h3>\n<p>Una singola istruzione supera <code>max_allowed_packet<\/code>. La compressione del file non riduce la dimensione della query una volta decompressa. Occorre adeguare il parametro server o generare un dump con istruzioni pi\u00f9 piccole.<\/p>\n<h3>Access denied<\/h3>\n<p>Controlla utente, password, host e privilegi sul database. Un utente pu\u00f2 collegarsi correttamente ma non avere permessi per creare, modificare o eliminare tabelle.<\/p>\n<h2>Verifiche dopo l\u2019importazione<\/h2>\n<ul>\n<li>controlla che tutte le tabelle previste siano presenti;<\/li>\n<li>confronta numero indicativo di righe e dimensioni con l\u2019origine;<\/li>\n<li>verifica errori applicativi e connessione al database;<\/li>\n<li>prova login, salvataggi, ricerche e funzioni critiche;<\/li>\n<li>controlla charset, caratteri accentati ed emoji;<\/li>\n<li>rimuovi dump e file temporanei dalle directory accessibili;<\/li>\n<li>crea un nuovo backup verificato dello stato funzionante.<\/li>\n<\/ul>\n<h2>Conclusione<\/h2>\n<p>Per importare database grandi con phpMyAdmin conviene prima verificare limiti, compressione e compatibilit\u00e0. Quando browser e PHP non sono adatti alla dimensione del dump, WP-CLI o il client MySQL offrono un processo pi\u00f9 stabile. Qualunque metodo scegli, proteggi il file SQL, conserva un backup e verifica l\u2019esito prima di rimuovere la copia precedente.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Per importare database grandi con phpMyAdmin bisogna considerare i limiti di caricamento PHP, il tempo massimo di esecuzione e la memoria disponibile. Quando il dump supera tali limiti, ripetere l\u2019upload non risolve il problema: conviene usare un file compresso, una directory di importazione configurata dal provider oppure la riga di comando. Prima di qualsiasi importazione [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_lmt_disableupdate":"no","_lmt_disable":"","footnotes":""},"categories":[1413],"tags":[715,716,8,713,711,712,714,717,376,718],"class_list":["post-6741","post","type-post","status-publish","format-standard","hentry","category-tutorial","tag-backup-mysql","tag-bigdump","tag-hosting","tag-hosting-mysql","tag-importare-database-mysql","tag-importare-database-mysql-grosse-dimensioni","tag-importazione-database-mysql","tag-mysqldumper","tag-phpmyadmin","tag-sypex-dumper"],"modified_by":"Team tecnico Xlogic","_links":{"self":[{"href":"https:\/\/xlogic.org\/blog\/wp-json\/wp\/v2\/posts\/6741","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/xlogic.org\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/xlogic.org\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/xlogic.org\/blog\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/xlogic.org\/blog\/wp-json\/wp\/v2\/comments?post=6741"}],"version-history":[{"count":0,"href":"https:\/\/xlogic.org\/blog\/wp-json\/wp\/v2\/posts\/6741\/revisions"}],"wp:attachment":[{"href":"https:\/\/xlogic.org\/blog\/wp-json\/wp\/v2\/media?parent=6741"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/xlogic.org\/blog\/wp-json\/wp\/v2\/categories?post=6741"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/xlogic.org\/blog\/wp-json\/wp\/v2\/tags?post=6741"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}