- 1 1. Ce que vous pourrez faire dans cet article
- 2 2. Types d’importations MySQL et quand les utiliser
- 3 3. Importation d’un fichier SQL (le chemin le plus rapide vers le succès)
- 4 4. Importation CSV (Le plus important : le plus rapide avec LOAD DATA)
- 4.1 4.1 Premièrement : prérequis CSV
- 4.2 4.2 Forme de base prête à copier‑coller (CSV avec en‑tête)
- 4.3 4.3 Importer uniquement les colonnes dont vous avez besoin
- 4.4 4.4 Convertir les dates et les types lors de l’importation
- 4.5 4.5 Pour les fichiers à délimitation par tabulation (TSV)
- 4.6 4.6 Améliorer davantage les performances (pour les gros volumes de données)
- 4.7 ✔ Forme pratique recommandée
- 5 5. Principales 4 raisons d’échecs d’INFILE (Section la plus importante)
- 5.1 5.1 Différence entre INFILE et LOCAL INFILE
- 5.2 5.2 local_infile est désactivé (cause de l’ERREUR 1148)
- 5.3 5.3 Restriction secure_file_priv
- 5.4 5.4 Privilèges insuffisants (privilège FILE / permissions OS)
- 5.5 5.5 Spécification de chemin incorrecte
- 5.6 ✔ Flux de dépannage rapide pour les problèmes INFILE
- 6 6. Importation via GUI (Workbench / phpMyAdmin)
- 7 7. Dépannage (Par erreur : Cause → Solution la plus rapide)
- 8 8. Techniques réelles pour les grands ensembles de données (opérations à l’épreuve des échecs)
- 8.1 8.1 Diviser le fichier et importer par étapes
- 8.2 8.2 Désactiver temporairement les index et les clés étrangères
- 8.3 8.3 Contrôler l’autocommit (accélération)
- 8.4 8.4 Paramètres recommandés pour les chargements en masse
- 8.5 8.5 Augmenter les délais d’attente
- 8.6 8.6 Stratégie de table de staging (opérations sûres)
- 8.7 ✔ Modèle réel le plus stable
- 8.8 ✔ Conclusion pour les gros volumes de données
- 9 9. FAQ (questions fréquentes)
- 9.1 Q1. Puis-je importer uniquement des colonnes spécifiques d’un CSV ?
- 9.2 Q2. Comment traiter les cellules vides comme NULL ?
- 9.3 Q3. Comment ignorer la ligne d’en-tête ?
- 9.4 Q4. Comment puis‑je valider les résultats de l’importation ?
- 9.5 Q5. Quelle méthode est la plus rapide ?
- 9.6 Q6. J’obtiens une erreur de fin de ligne sous Windows
- 9.7 Q7. J’obtiens une erreur secure_file_priv
- 9.8 ✔ Résumé de la FAQ
- 10 10. Résumé
1. Ce que vous pourrez faire dans cet article
De nombreuses personnes recherchant « importation de données MySQL » se trouvent dans une situation où elles souhaitent :
- « restaurer un fichier .sql »
- « importer un CSV »
- « cela s’arrête avec une erreur »
- « cela ne fonctionne pas dans Workbench ou phpMyAdmin »
En d’autres termes, vous voulez une solution que vous pouvez appliquer immédiatement.
Tout d’abord, voici les « chemins de succès » les plus courts selon l’objectif.
🔹 Commande la plus rapide pour importer un fichier SQL (.sql)
Pour les restaurations de sauvegarde ou la migration de serveur, c’est le plus rapide.
mysql -u username -p database_name < backup.sql
Points à vérifier au préalable
- La base de données de destination existe‑t‑elle ?
- L’utilisateur de connexion a‑t‑il les privilèges pour la base cible ?
- L’encodage du fichier SQL (généralement UTF‑8)
Si la base de données n’a pas encore été créée :
CREATE DATABASE example_db;
🔹 Méthode la plus rapide pour importer un fichier CSV (recommandée)
Pour importer rapidement de grandes quantités de données, LOAD DATA est idéal.
LOAD DATA LOCAL INFILE '/path/to/example.csv'
INTO TABLE example_table
FIELDS TERMINATED BY ','
OPTIONALLY ENCLOSED BY '"'
LINES TERMINATED BY '\n'
IGNORE 1 LINES
(id, name, @age)
SET age = NULLIF(@age,'');
Points clés
- Terminaisons de ligne Windows →
'\r\n' - S’il y a une ligne d’en‑tête →
IGNORE 1 LINES - Convertir les chaînes vides en NULL →
NULLIF() - De nombreux environnements nécessitent LOCAL (expliqué plus tard)
🔹 Si vous souhaitez importer via une interface graphique
MySQL Workbench
- Serveur → Importation de données → sélectionner un fichier → exécuter
phpMyAdmin
- Sélectionner la base cible → Importer → choisir un fichier → exécuter
⚠ Cependant, pour les gros fichiers et une gestion fiable des erreurs, la CLI (ligne de commande) est plus fiable.
🔹 3 éléments à vérifier avant d’importer
1. Jeu de caractères (le plus important)
SHOW VARIABLES LIKE 'character_set%';
Recommandé : utf8mb4
2. Paramètres qui provoquent des erreurs liées à INFILE
SHOW VARIABLES LIKE 'local_infile';
SHOW VARIABLES LIKE 'secure_file_priv';
3. Vérification des privilèges
SHOW GRANTS FOR 'user'@'localhost';
✔ Ce qui suit dans cet article
- Méthodes détaillées pour importer des fichiers SQL
- Techniques pratiques d’importation CSV
- Une analyse complète des raisons d’échec d’INFILE
- Corrections les plus rapides selon le type d’erreur
- Techniques réelles pour les grands ensembles de données

2. Types d’importations MySQL et quand les utiliser
Il existe plusieurs façons d’importer dans MySQL, mais le meilleur choix dépend de votre cas d’utilisation.
Si vous comprenez cela correctement, vous pouvez éviter des problèmes inutiles.
2.1 Quand importer un dump SQL (.sql)
Cas d’utilisation courants
- Restauration à partir d’une sauvegarde
- Migration de serveur
- Appliquer des données similaires à la production dans un environnement de développement
- Réimporter des données exportées avec
mysqldump
Fonctionnalités
- Restaure la structure complète des tables + les données
- Haute reproductibilité
- Peut inclure des transactions
- Généralement l’option la plus sûre
Méthodes typiques
mysql -u user -p dbname < dump.sql
Ou à l’intérieur de MySQL:
SOURCE /path/to/dump.sql;
Idéal pour
- Restauration complète d’une base existante
- Reconstruction d’un environnement de production
- Chargement de données pour les environnements CI/CD
2.2 Quand importer CSV / TSV
Cas d’utilisation courants
- Réception de données provenant de systèmes externes
- Importation de données Excel
- Traitement ETL
- Mise à jour de tables spécifiques uniquement
Fonctionnalités
- Charge uniquement les données (le schéma doit exister séparément)
- Rapide (
LOAD DATAest extrêmement rapide) - Permet la logique de transformation pendant l’importation
Méthode typique
LOAD DATA LOCAL INFILE 'file.csv'
INTO TABLE table_name
FIELDS TERMINATED BY ','
LINES TERMINATED BY '\n';
Idéal pour
- Jobs batch programmés
- Intégration de données
- Ingestion à haute vitesse de grands volumes de lignes
2.3 Quand utiliser des outils GUI
Outils courants:
- MySQL Workbench
- phpMyAdmin
Fonctionnalités
- Opération intuitive
- Convient aux débutants
- Adapté aux petits ensembles de données
Précautions
- Limites de téléchargement (phpMyAdmin)
- Timeouts
- Instable avec de grandes quantités de données
- Plus difficile d’analyser les erreurs
2.4 Comparaison par méthode (point de vue pratique)
| Method | Speed | Stability | Large-file support | Error analysis | Recommendation |
|---|---|---|---|---|---|
| mysql command | ◎ | ◎ | ◎ | ◎ | ★★★★★ |
| LOAD DATA | ◎ | ○ | ◎ | ○ | ★★★★★ |
| Workbench | ○ | ○ | △ | △ | ★★★ |
| phpMyAdmin | △ | △ | × | △ | ★★ |
✔ Choix recommandés en situation réelle
- Restauration de sauvegarde → commande mysql
- Import CSV haute vitesse → LOAD DATA LOCAL INFILE
- Petites tâches ponctuelles → GUI
Si vous n’êtes pas sûr, choisir la CLI (ligne de commande) est l’option la plus stable.
3. Importation d’un fichier SQL (le chemin le plus rapide vers le succès)
Importer un fichier .sql est la méthode la plus courante pour les restaurations de sauvegarde et les migrations de serveur.
Ici, l’objectif est de « réussir le plus rapidement possible », nous nous concentrerons donc uniquement sur les étapes pratiques utilisées en situation réelle.
3.1 Restauration en une ligne (la méthode la plus courante)
C’est la méthode la plus fiable et la plus rapide.
mysql -u username -p database_name < backup.sql
Après l’avoir exécuté, il vous sera demandé le mot de passe.
✔ Vérifications préliminaires (pour éviter les échecs)
① La base de données existe-t-elle ?
SHOW DATABASES;
Si elle n’existe pas :
CREATE DATABASE example_db;
② L’utilisateur possède-t-il les privilèges ?
SHOW GRANTS FOR 'user'@'localhost';
Si les privilèges sont manquants :
GRANT ALL PRIVILEGES ON example_db.* TO 'user'@'localhost';
FLUSH PRIVILEGES;
③ Encodage du fichier
Habituellement c’est UTF-8.
Si vous voyez des caractères illisibles, spécifiez-le explicitement.
mysql --default-character-set=utf8mb4 -u user -p dbname < backup.sql
3.2 Exécution depuis MySQL (commande SOURCE)
Cette méthode s’exécute après vous être connecté à MySQL.
mysql -u user -p
USE example_db;
SOURCE /path/to/backup.sql;
Quand c’est utile
- Lorsque vous souhaitez n’exécuter qu’une partie d’un fichier SQL
- Lorsque vous voulez identifier l’emplacement exact de l’erreur
- Lorsque vous désirez confirmer visuellement le journal d’exécution
3.3 Échecs courants et solutions
❌ ERREUR 1049 : Base de données inconnue
→ La base de données n’existe pas
→ Exécutez CREATE DATABASE
❌ ERREUR 1045 : Accès refusé
→ Privilèges insuffisants
→ Vérifiez avec SHOW GRANTS
❌ Il s’arrête à mi‑parcours / l’emplacement de l’erreur n’est pas clair
Solution :
- Vérifiez le début et la fin du fichier
head backup.sql tail backup.sql
- Vérifiez les lignes juste avant l’erreur
- Si le fichier est volumineux, divisez‑le et exécutez‑le par parties
split -l 10000 backup.sql part_
3.4 Conseils pour stabiliser les importations SQL volumineuses
① Vérifier les paramètres de transaction
Vérifiez si SET autocommit=0; est présent
② Si les contraintes de clé étrangère sont le problème
SET FOREIGN_KEY_CHECKS=0;
-- import
SET FOREIGN_KEY_CHECKS=1;
③ Vérifier le mode SQL
SELECT @@sql_mode;
Le mode strict peut affecter l’importation.
✔ Recommandations pratiques
- Restauration en production → commande mysql
- Débogage → SOURCE
- Gros fichiers → CLI + envisager de les diviser
4. Importation CSV (Le plus important : le plus rapide avec LOAD DATA)
Lors de l’importation de données CSV, la méthode la plus rapide et la plus pratique est LOAD DATA.
Pour les grands ensembles de données, elle est largement plus rapide que les instructions INSERT.
Ici, nous fournirons le format correct « copier‑coller et exécuter » et mettrons en évidence les points d’échec courants.
4.1 Premièrement : prérequis CSV
Avant d’importer, assurez‑vous de vérifier les points suivants.
✔ Délimiteur
- Virgule
, - Tabulation
\t - Point‑virgule
;(courant dans les données étrangères)
✔ Caractère de citation
- Si les valeurs sont entourées de guillemets doubles, par ex.
"value"
✔ Fin de ligne
- Linux / Mac →
\n - Windows →
\r\n
✔ Jeu de caractères / encodage
- Recommandé :
utf8mb4 - CSV créé sous Windows peut être Shift-JIS
- UTF-8 avec BOM peut parfois provoquer des erreurs
Exemple de vérification :
file -i example.csv
4.2 Forme de base prête à copier‑coller (CSV avec en‑tête)
LOAD DATA LOCAL INFILE '/path/to/example.csv'
INTO TABLE example_table
FIELDS TERMINATED BY ','
OPTIONALLY ENCLOSED BY '"'
LINES TERMINATED BY '\n'
IGNORE 1 LINES
(id, name, @age)
SET age = NULLIF(@age,'');
Signification de chaque option
LOCALLit un fichier depuis le côté client (requis dans de nombreux environnements)IGNORE 1 LINESIgnore la ligne d’en‑tête@ageVariable temporaire utilisée pour transformer la valeur avant de l’enregistrerNULLIF()Convertit les chaînes vides en NULL
4.3 Importer uniquement les colonnes dont vous avez besoin
Si le CSV contient des colonnes inutiles :
LOAD DATA LOCAL INFILE '/path/to/example.csv'
INTO TABLE example_table
FIELDS TERMINATED BY ','
LINES TERMINATED BY '\n'
(id, @dummy, age);
Mappez les colonnes indésirables vers @dummy.
4.4 Convertir les dates et les types lors de l’importation
Exemple : convertir MM/DD/YYYY → format MySQL
LOAD DATA LOCAL INFILE '/path/to/example.csv'
INTO TABLE example_table
FIELDS TERMINATED BY ','
LINES TERMINATED BY '\n'
(@date_col, name)
SET date_col = STR_TO_DATE(@date_col, '%m/%d/%Y');
4.5 Pour les fichiers à délimitation par tabulation (TSV)
FIELDS TERMINATED BY '\t'
4.6 Améliorer davantage les performances (pour les gros volumes de données)
Désactiver temporairement les index
ALTER TABLE example_table DISABLE KEYS;
-- Run LOAD DATA
ALTER TABLE example_table ENABLE KEYS;
Désactiver temporairement les clés étrangères
SET FOREIGN_KEY_CHECKS=0;
-- Run LOAD DATA
SET FOREIGN_KEY_CHECKS=1;
Pourquoi LOCAL est souvent requis
LOAD DATA INFILE→ lit un fichier côté serveurLOAD DATA LOCAL INFILE→ lit un fichier côté client
Dans de nombreux environnements, l’utilisation de LOCAL a un taux de réussite plus élevé.
✔ Forme pratique recommandée
Dans la plupart des cas :
LOAD DATA LOCAL INFILE
+ explicit delimiter
+ explicit line endings
+ IGNORE 1 LINES
+ type conversion
C’est l’approche la plus stable.
5. Principales 4 raisons d’échecs d’INFILE (Section la plus importante)
La plupart des échecs de LOAD DATA INFILE sont causés par des paramètres, des privilèges ou une mauvaise compréhension de l’emplacement source.
Si vous comprenez cela, vous pouvez résoudre la plupart des erreurs immédiatement.
5.1 Différence entre INFILE et LOCAL INFILE
C’est le concept de base essentiel.
| Command | Where it reads from | Typical use |
|---|---|---|
LOAD DATA INFILE | File on the server | A fixed path on the server |
LOAD DATA LOCAL INFILE | File on the client | A CSV on your local PC |
Mécompréhensions courantes
- Tenter de lire un fichier local sur le PC avec
INFILEet échouer - Le fichier n’existe pas sur le serveur
✔ Règle pratique
- CSV sur votre propre PC →
LOCAL - CSV placé sur le serveur →
INFILE
En cas de doute, utiliser LOCAL est le choix le plus sûr.
5.2 local_infile est désactivé (cause de l’ERREUR 1148)
Exemple d’erreur :
ERROR 1148 (42000): The used command is not allowed with this MySQL version
Cause :
local_infile est OFF
✔ Vérifier le paramètre actuel
SHOW VARIABLES LIKE 'local_infile';
✔ L’activer lors de la connexion (côté client)
mysql --local-infile=1 -u user -p
✔ L’activer de façon permanente (fichier de configuration)
Ajoutez à my.cnf ou my.ini :
[mysqld]
local_infile=1
Vous devez redémarrer le serveur.
5.3 Restriction secure_file_priv
Cela se produit lors de l’utilisation de LOAD DATA INFILE (sans LOCAL).
Vérifiez :
SHOW VARIABLES LIKE 'secure_file_priv';
Exemple de sortie
/var/lib/mysql-files/
→ Vous ne pouvez lire que les fichiers à l’intérieur de ce répertoire.
✔ Correction
- Déplacez le CSV dans le répertoire autorisé
- Ou utilisez
LOCAL
5.4 Privilèges insuffisants (privilège FILE / permissions OS)
Exemple d’erreur :
ERROR 1045: Access denied
Vérifiez :
SHOW GRANTS FOR 'user'@'localhost';
✔ Privilège requis
GRANT FILE ON *.* TO 'user'@'localhost';
※ Pour la sécurité, utilisez le moins de privilèges possible.
5.5 Spécification de chemin incorrecte
- Utilisez un chemin absolu, pas un chemin relatif
- Sous Windows,
C:/path/file.csvest recommandé - Les barres obliques (
/) sont plus sûres que les antislashs (\)
✔ Flux de dépannage rapide pour les problèmes INFILE
- Avez‑vous ajouté
LOCAL? SHOW VARIABLES LIKE 'local_infile';SHOW VARIABLES LIKE 'secure_file_priv';- Vérifiez les privilèges (SHOW GRANTS)
- Vérifiez le chemin (chemin absolu)
Dans cet ordre, vous pouvez résoudre la plupart des cas.
6. Importation via GUI (Workbench / phpMyAdmin)
La ligne de commande est la plus stable, mais il existe des situations où vous souhaitez utiliser des outils GUI.
Ici, nous nous concentrerons sur les points communs où les gens rencontrent des difficultés dans le travail réel.
6.1 Importation avec MySQL Workbench
Importer un fichier SQL (restauration de sauvegarde)
- Lancer Workbench
- Menu → Server → Data Import
- Sélectionner « Import from Self-Contained File »
- Sélectionner le fichier
.sql - Sélectionner le schéma cible (database)
- Cliquer sur « Start Import »
Importer CSV (par table)
- Faire un clic droit sur la table cible
- Sélectionner Table Data Import Wizard
- Sélectionner le fichier CSV
- Définir le délimiteur et indiquer s’il y a un en-tête
- Exécuter
⚠ Raisons courantes pour lesquelles Workbench se bloque
- Fichiers volumineux (des centaines de Mo ou plus)
- Délais d’attente
- Incohérence d’encodage
- Restrictions
secure_file_priv
👉 Pour les gros fichiers ou les environnements de production, la CLI est recommandée.
6.2 Importation avec phpMyAdmin
Étapes
- Sélectionner la base de données cible
- Ouvrir l’onglet « Import »
- Choisir un fichier
- Sélectionner le format (SQL / CSV)
- Exécuter
⚠ Limitations de phpMyAdmin
① Limite de taille d’upload
upload_max_filesize
post_max_size
Les gros fichiers échoueront.
② Délai d’attente
max_execution_timeLes importations longues peuvent s’arrêter en cours de route.
③ Mémoire insuffisante
memory_limit6.3 Quand vous devriez utiliser l’interface graphique
- Petits ensembles de données (quelques Mo)
- Environnements de développement
- Travail temporaire ponctuel
6.4 Quand vous devriez utiliser la CLI (recommandé)
- Environnements de production
- Des dizaines de Mo ou plus
- Importations CSV volumineuses
- Lorsque vous avez besoin d’analyse d’erreurs
- Migrations serveur à serveur
✔ Conclusion pratique
L’interface graphique est « facile », mais
la CLI est largement meilleure pour la stabilité, la reproductibilité et la gestion des gros fichiers.
Pour le dépannage, il est finalement recommandé d’apprendre les opérations en CLI.
7. Dépannage (Par erreur : Cause → Solution la plus rapide)
La plupart des erreurs d’importation MySQL sont très récurrentes.
Ici, nous les organiserons dans l’ordre « cause → première action → commande de vérification ».
7.1 ERREUR 1148 (42000)
La commande utilisée n’est pas autorisée avec cette version de MySQL
🔎 Cause
LOAD DATA LOCAL INFILEest désactivélocal_infileest OFF
✅ Solution la plus rapide
① Vérifier les paramètres actuels
SHOW VARIABLES LIKE 'local_infile';
② Activer lors de la connexion (côté client)
mysql --local-infile=1 -u user -p
③ Activer de façon permanente (si nécessaire)
[mysqld]
local_infile=1
→ Redémarrer MySQL
7.2 ERREUR 1366
Valeur de chaîne incorrecte
🔎 Cause
- Incohérence d’encodage
- Incohérence entre utf8 et utf8mb4
- Mélange de Shift-JIS
✅ Solution la plus rapide
① Vérifier le jeu de caractères actuel
SHOW VARIABLES LIKE 'character_set%';
② Convertir la table en utf8mb4
ALTER TABLE example_table CONVERT TO CHARACTER SET utf8mb4;
③ Le spécifier explicitement lors de l’importation
mysql --default-character-set=utf8mb4 -u user -p db < file.sql
7.3 ERREUR 1062
Entrée dupliquée
🔎 Cause
- Clés primaires dupliquées
- Violation de contrainte UNIQUE
✅ Options de correction
Option 1 : Ignorer les duplicatas
LOAD DATA LOCAL INFILE 'file.csv'
INTO TABLE example_table
IGNORE;
Option 2 : Mettre à jour en cas de duplication
INSERT INTO example_table (id, name)
VALUES (1,'John')
ON DUPLICATE KEY UPDATE name=VALUES(name);
Option 3 : Utiliser une table de staging
CREATE TEMPORARY TABLE temp LIKE example_table;
-- LOAD into temp first
INSERT INTO example_table
SELECT * FROM temp;
7.4 ERREUR 1045
Accès refusé pour l’utilisateur
🔎 Cause
- Privilèges DB insuffisants
- Privilège FILE insuffisant
- Permissions OS insuffisantes pour le chemin
✅ Vérifier
SHOW GRANTS FOR 'user'@'localhost';
✅ Exemple de privilèges requis
GRANT ALL PRIVILEGES ON example_db.* TO 'user'@'localhost';
FLUSH PRIVILEGES;
※ Soyez prudent lors de l’octroi du privilège FILE.
7.5 Il s’arrête en cours de route sur les gros fichiers
🔎 Cause
- Délai d’attente
- Mémoire insuffisante
- Limites PHP (phpMyAdmin)
✅ Contremesures les plus rapides
Augmenter les délais d’attente
SET GLOBAL net_read_timeout=600;
SET GLOBAL net_write_timeout=600;
Diviser le fichier
split -l 100000 large.csv part_
✔ Flux de résolution d’erreurs (le plus rapide)
- Vérifier l’encodage
- Vérifier
local_infile - Vérifier
secure_file_priv - Vérifier les privilèges
- Vérifier les fins de ligne (
\n/\r\n)
Dans cet ordre, vous pouvez résoudre la plupart des problèmes.
8. Techniques réelles pour les grands ensembles de données (opérations à l’épreuve des échecs)
Lors de l’importation de centaines de milliers à des millions de lignes,
les méthodes habituelles peuvent être lentes, s’arrêter ou échouer.
Voici des techniques stables couramment utilisées en production.
8.1 Diviser le fichier et importer par étapes
Alimenter un énorme CSV/SQL en une seule fois peut provoquer des problèmes de mémoire et de délai d’attente.
✔ Linux / Mac
split -l 100000 large.csv part_
→ Diviser en 100 000 lignes par partie
✔ Windows (exemple PowerShell)
Get-Content large.csv -TotalCount 100000 > part_1.csv
✔ Avantages des importations par étapes
- Plus facile de réessayer après un échec partiel
- Plus facile d’identifier l’emplacement de l’erreur
- Charge du serveur plus stable
8.2 Désactiver temporairement les index et les clés étrangères
Pendant l’importation, les mises à jour d’index deviennent souvent le goulot d’étranglement.
✔ Désactiver temporairement les index
ALTER TABLE example_table DISABLE KEYS;
-- LOAD DATA
ALTER TABLE example_table ENABLE KEYS;
※ Principalement pour MyISAM. Effet limité pour InnoDB.
✔ Désactiver les clés étrangères
SET FOREIGN_KEY_CHECKS=0;
-- import
SET FOREIGN_KEY_CHECKS=1;
8.3 Contrôler l’autocommit (accélération)
SET autocommit=0;
-- LOAD DATA
COMMIT;
SET autocommit=1;
8.4 Paramètres recommandés pour les chargements en masse
SET UNIQUE_CHECKS=0;
SET FOREIGN_KEY_CHECKS=0;
SET AUTOCOMMIT=0;
Après l’importation:
COMMIT;
SET UNIQUE_CHECKS=1;
SET FOREIGN_KEY_CHECKS=1;
SET AUTOCOMMIT=1;
⚠ À utiliser avec précaution en production.
8.5 Augmenter les délais d’attente
SET GLOBAL net_read_timeout=600;
SET GLOBAL net_write_timeout=600;
8.6 Stratégie de table de staging (opérations sûres)
Au lieu d’importer directement dans la table de production, utilisez d’abord une table de validation.
CREATE TABLE staging LIKE example_table;
LOAD DATA LOCAL INFILE 'file.csv' INTO TABLE staging;
Après validation:
INSERT INTO example_table
SELECT * FROM staging;
✔ Modèle réel le plus stable
- Charger dans une table de staging
- Vérifier le nombre de lignes
- Valider les contraintes
- Appliquer en production
- Enregistrer les journaux
✔ Conclusion pour les gros volumes de données
- Utiliser le CLI chaque fois que possible
- Diviser les importations
- Passer par le staging
- Désactiver temporairement les contraintes
- Vérifier les journaux
Cela permettra de garder les importations stables même à des millions de lignes.
9. FAQ (questions fréquentes)
Voici des réponses rapides et pratiques aux questions fréquemment recherchées sur l’importation MySQL.
Q1. Puis-je importer uniquement des colonnes spécifiques d’un CSV ?
Oui, vous pouvez.
Vous pouvez mapper les colonnes inutiles à une variable (comme @dummy) et les ignorer.
LOAD DATA LOCAL INFILE '/path/to/example.csv'
INTO TABLE example_table
FIELDS TERMINATED BY ','
LINES TERMINATED BY '\n'
(id, @dummy, age);
Si vous ne voulez que certaines colonnes, assurez‑vous de spécifier explicitement l’ordre des colonnes.
Q2. Comment traiter les cellules vides comme NULL ?
Utilisez NULLIF().
LOAD DATA LOCAL INFILE '/path/to/example.csv'
INTO TABLE example_table
FIELDS TERMINATED BY ','
LINES TERMINATED BY '\n'
(name, @age)
SET age = NULLIF(@age,'');
Cela convertit les chaînes vides ( ») en NULL.
Q3. Comment ignorer la ligne d’en-tête ?
IGNORE 1 LINES
Exemple :
LOAD DATA LOCAL INFILE '/path/to/example.csv'
INTO TABLE example_table
FIELDS TERMINATED BY ','
LINES TERMINATED BY '\n'
IGNORE 1 LINES;
Q4. Comment puis‑je valider les résultats de l’importation ?
✔ Vérifier le nombre de lignes
SELECT COUNT(*) FROM example_table;
✔ Vérifier les avertissements/erreurs
Vérifiez les avertissements MySQL :
SHOW WARNINGS;
✔ Stratégie de table de staging (recommandée)
Chargez d’abord dans une table de staging, puis appliquez en production.
Q5. Quelle méthode est la plus rapide ?
Conclusion :
- CSV → LOAD DATA LOCAL INFILE (le plus rapide)
- Restauration de sauvegarde → commande mysql
L’interface graphique est pratique, mais la CLI l’emporte en vitesse et stabilité.
Q6. J’obtiens une erreur de fin de ligne sous Windows
C’est dû aux fins de ligne.
Windows :
LINES TERMINATED BY '\r\n'
Linux / Mac :
LINES TERMINATED BY '\n'
Q7. J’obtiens une erreur secure_file_priv
Vérifier :
SHOW VARIABLES LIKE 'secure_file_priv';
Correction :
- Placez le CSV dans le répertoire autorisé
- Ou utilisez
LOCAL
✔ Résumé de la FAQ
- Mappage de colonne →
@dummy - Conversion NULL →
NULLIF - Ignorer l’en-tête →
IGNORE 1 LINES - Import à haute vitesse →
LOAD DATA - Points « bloquants » principaux →
local_infile/secure_file_priv/ encodage
10. Résumé
Les importations MySQL peuvent sembler complexes au premier abord, mais une fois organisées par objectif, elles sont très simples.
Récapitulons les chemins de succès les plus courts.
✔ Restaurer un fichier SQL (.sql)
Le plus rapide et le plus stable :
mysql -u user -p dbname < backup.sql
- Vérifiez si la base de données existe
- Vérifiez les privilèges
- Recommandez
utf8mb4pour l’encodage
✔ Importer CSV (rapide)
Forme de base :
LOAD DATA LOCAL INFILE '/path/to/file.csv'
INTO TABLE table_name
FIELDS TERMINATED BY ','
OPTIONALLY ENCLOSED BY '"'
LINES TERMINATED BY '\n'
IGNORE 1 LINES;
Points clés :
- Fins de ligne Windows →
\r\n - Chaînes vides →
NULLIF() - En cas d’échec, vérifiez
local_infile
✔ Ordre de vérification du dépannage
- Encodage (recommandez utf8mb4)
SHOW VARIABLES LIKE 'local_infile';SHOW VARIABLES LIKE 'secure_file_priv';- Privilèges (SHOW GRANTS)
- Fins de ligne
Dans cet ordre, vous pouvez résoudre la plupart des problèmes.
✔ Règles d’or pour les grands ensembles de données
- Utilisez la CLI
- Divisez les importations
- Passez par une table de staging
- Désactivez temporairement les clés étrangères/contraintes
- Vérifiez les journaux
✔ Conclusion finale
- Restauration de sauvegarde → commande mysql
- Import CSV à haute vitesse → LOAD DATA LOCAL INFILE
- Petites tâches ponctuelles → GUI
Si vous n’êtes pas sûr, utiliser la CLI est le choix le plus stable.
Avec cela, vous disposez maintenant d’un ensemble complet de connaissances pour les importations MySQL.
Essayez-le dans votre environnement et construisez un flux de travail opérationnel stable.


