Guide d’importation MySQL : Importer des dumps SQL & CSV rapidement (LOAD DATA, Workbench, phpMyAdmin)

目次

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

MySQL data import workflow diagram showing SQL file, CSV file, LOAD DATA LOCAL INFILE, mysql command, and MySQL server process

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 DATA est 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)

MethodSpeedStabilityLarge-file supportError analysisRecommendation
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 :

  1. Vérifiez le début et la fin du fichier
    head backup.sql
    tail backup.sql
    
  1. Vérifiez les lignes juste avant l’erreur
  2. 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

  • LOCAL Lit un fichier depuis le côté client (requis dans de nombreux environnements)
  • IGNORE 1 LINES Ignore la ligne d’en‑tête
  • @age Variable temporaire utilisée pour transformer la valeur avant de l’enregistrer
  • NULLIF() 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é serveur
  • LOAD 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.

CommandWhere it reads fromTypical use
LOAD DATA INFILEFile on the serverA fixed path on the server
LOAD DATA LOCAL INFILEFile on the clientA CSV on your local PC

Mécompréhensions courantes

  • Tenter de lire un fichier local sur le PC avec INFILE et é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.csv est recommandé
  • Les barres obliques (/) sont plus sûres que les antislashs (\)

✔ Flux de dépannage rapide pour les problèmes INFILE

  1. Avez‑vous ajouté LOCAL ?
  2. SHOW VARIABLES LIKE 'local_infile';
  3. SHOW VARIABLES LIKE 'secure_file_priv';
  4. Vérifiez les privilèges (SHOW GRANTS)
  5. 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)

  1. Lancer Workbench
  2. Menu → Server → Data Import
  3. Sélectionner « Import from Self-Contained File »
  4. Sélectionner le fichier .sql
  5. Sélectionner le schéma cible (database)
  6. Cliquer sur « Start Import »

Importer CSV (par table)

  1. Faire un clic droit sur la table cible
  2. Sélectionner Table Data Import Wizard
  3. Sélectionner le fichier CSV
  4. Définir le délimiteur et indiquer s’il y a un en-tête
  5. 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

  1. Sélectionner la base de données cible
  2. Ouvrir l’onglet « Import »
  3. Choisir un fichier
  4. Sélectionner le format (SQL / CSV)
  5. 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_time

Les importations longues peuvent s’arrêter en cours de route.

③ Mémoire insuffisante
memory_limit

6.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 INFILE est désactivé
  • local_infile est 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)

  1. Vérifier l’encodage
  2. Vérifier local_infile
  3. Vérifier secure_file_priv
  4. Vérifier les privilèges
  5. 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

  1. Charger dans une table de staging
  2. Vérifier le nombre de lignes
  3. Valider les contraintes
  4. Appliquer en production
  5. 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 utf8mb4 pour 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

  1. Encodage (recommandez utf8mb4)
  2. SHOW VARIABLES LIKE 'local_infile';
  3. SHOW VARIABLES LIKE 'secure_file_priv';
  4. Privilèges (SHOW GRANTS)
  5. 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.