• # SOLUTION ! passer par MyISAM

    Posté par (site web personnel) . En réponse au message MariaDB (MySQL) MDB Tools → trés nombreux insert, extrêmement lent :( ? [résolu]. Évalué à 3. Dernière modification le 09 octobre 2015 à 16:18.

    Par défaut sur le serveur, c'est le moteur InnoDB qui est utilisé.
    Le passage du fichier Access vers MariaDB se fait dans une base de donnée temporaire (MyISAM). Un dump est fait à partir de là et réinjecté dans la base de donnée "en production" (InnoDB).

    Voici un résumé de mon script :

    $mdbfile="db_MSAccess.mdb"
    echo "SET storage_engine=MyISAM;" >db_schema.sql
    mdb-schema --drop-table "$mdbfile" mysql |grep -v "^COMMENT ON COLUMN" >>db_schema.sql
    mysql -u theuser -pthepass tempdb <db_drop_tables.sql
    mysql -u theuser -pthepass tempdb <db_schema.sql
    # Oui, dans la base de donnée Access,
    # les noms de table sont parfois "horribles" :(
    mdb-export -D %F -I mysql "$mdbfile" "Première Table" >db_data.sql
    mdb-export -D %F -I mysql "$mdbfile" "Deuxième Table" >>db_data.sql
    # ... les autres tables...
    mysql -u theuser -pthepass tempdb <db_data.sql
    # Oui, je corrige cela...
    mysql -u theuser -pthepass tempdb <db_rename.sql
    # et encore d'autres aberrations...
    mysql -u theuser -pthepass tempdb <db_cleaning.sql
    mysqldump -u theuser -pthepass tempdb >tempdb_dump.sql
    sed -i 's|ENGINE=MyISAM|ENGINE=InnoDB|g' tempdb_dump.sql
    mysql -u theuser -pthepass proddb <tempdb_dump.sql

    Résultat, ce qui prenait 37 minutes prend maintenant 37 secondes :)