Importare file sql molto grandi in MySQL

Supponiamo di avere un dump di un database MySQL di dimensioni davvero considerevoli. Sappiamo che tramite lo strumento phpMyAdmin il massimo della grandezza di un file importabile è 128MB. Ma se il file è più grosso? Mettiamo 3 GB. Come fare?

Se abbiamo accesso via ssh al server possiamo accedere alla shell di MySQL e tentare l’import direttamente.

Una volta loggati (e dopo aver caricato il nostro file sul server) lanciamo da command line:

$ mysql -u username -p -h localhost DATA-BASE < /www/vhosts/examplesite.com/data.sql

Ovviamente come host se il valore nel vostro caso non è localhost va cambiato, come vanno cambiati il nome del database deve verrà importato il dump e il path dove avete caricato lo stesso dump.

L’altro metodo è questo, e l’ho testato con un dump mastodontico. Ha funzionato senza fare una piega.

$ mysql use DATA-BASE;
$ mysql SOURCE /www/vhosts/examplesite.com/data.sql;

Se non abbiamo accesso alla shell di MySQL c’è comunque una scappatoia, un po’ più laboriosa ma che comunque potrebbe risolvere il problema.

In rete ho trovato un tool, SQL Dump Splitter, che elabora il file e lo splitta in molti file più piccoli e facilmente gestibili. Questo permette di importarli direttamente da phpMyAdmin.

4 thoughts on “Importare file sql molto grandi in MySQL

  1. Salve. Ho tentato di seguire le vie che proponete ma senza successo:
    1) usando la shell di MySql mi dava sempre errori di sintassi (il file che deve essere caricato è in http://www.gbgrassi.it/forum/drupal.sql: che stringa devo usare?)
    2) Usando lo splitter ho avuto errori in due dei 6 files in cui ho splittato l’sql originario e tanto è bastato per far fallire l’operazione.
    Grazie di una cortese risposta
    Bertoldi

    1. Ciao Bertoldi,
      nel tuo caso specifico, una volta loggato nella shell di mysql inserirei questi comandi:

      mysql use il_nome_del_db_in_cui_importare_i_dati
      mysql SOURCE  /web/htdocs/www.gbgrassi.it/home/forum/drupal.sql
      

      Il path che ho inserito è percorso assoluto su server linux in aruba ma se intendi importare sql su un altro server/hosting devi recuperare questa informazione.

      Se lo devi importare su aruba l’sql prova ad eliminare dalle direttive di creazione delle tabelle la stringa “DEFAULT CHARSET=utf8”.

      Nello specifico che errore ti restituisce?

  2. Ciao A me da questo errore

    #1064 – You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near ‘mysql use melarossa2 mysql SOURCE /web/htdocs/62.149.242.45/melarossa2/phpMyAdm’ at line 1

    Come mai?

Rispondi