Import CSV PrestaShop : résoudre les problèmes d'affichage des réductions
Résolvez les erreurs d'affichage des réductions après un import CSV PrestaShop. Configuration PHP, MySQL et diagnostic complet pour imports volumineux.
En bref : Les problèmes d'affichage des réductions après un import CSV PrestaShop viennent soit de limites serveur trop basses (PHP/MySQL) qui tronquent silencieusement l'import, soit d'un cache non vidé alors que les données sont correctement enregistrées en base. Diagnostic en base d'abord, configuration serveur ensuite.
Introduction
L'import CSV est le moyen le plus courant d'alimenter un catalogue PrestaShop en masse. Mais lorsque des réductions ou prix spécifiques entrent en jeu, un scénario frustrant se répète : l'import semble fonctionner, les données sont bien présentes en base de données, et pourtant les réductions ne s'affichent pas correctement en front-office.
Ce problème a deux causes principales qu'il faut investiguer méthodiquement : une configuration serveur insuffisante qui tronque silencieusement l'import, ou un décalage entre les données importées et leur rendu visuel côté thème.
Étape 1 — Vérifier que les données sont réellement en base
Avant toute modification, le premier réflexe est de confirmer que le problème est bien un problème d'affichage et non d'import. Si les prix et réductions sont correctement enregistrés dans la base de données, le fichier CSV et le processus d'import ne sont pas en cause.
Requête de diagnostic rapide
-- Vérifier les prix spécifiques d'un produit
SELECT ps.id_product, ps.reduction, ps.reduction_type,
ps.from, ps.to, ps.price
FROM ps_specific_price ps
WHERE ps.id_product = 123;
-- Vérifier le prix de base du produit
SELECT p.id_product, p.price, p.wholesale_price
FROM ps_product p
WHERE p.id_product = 123;
Si les données sont bien là, le problème se situe en aval : cache, thème ou configuration d'affichage. Si les données sont absentes ou incomplètes, l'import a été interrompu — passez à l'étape 2.
Étape 2 — Configurer correctement le serveur pour les imports volumineux
La majorité des imports CSV échouent silencieusement à cause de limites serveur trop basses. C'est particulièrement vrai sur les environnements de développement locaux (MAMP, WAMP, XAMPP) dont les configurations par défaut sont minimalistes.
Configuration PHP recommandée
Localisez votre fichier php.ini selon votre environnement :
Note : Sur les versions anciennes (Ubuntu 14.x avec PHP 5.x), le chemin était
/etc/php5/apache2/php.ini. Adaptez selon votre version de PHP.
Appliquez ces valeurs, adaptées aux imports de catalogues conséquents :
; Temps d'exécution max (en secondes)
; Un import de 5000 produits peut prendre plusieurs minutes
max_execution_time = 30000
; Mémoire allouée à PHP
; 256M minimum, 1024M recommandé pour les gros catalogues
memory_limit = 1024M
; Taille maximale des données POST
post_max_size = 500M
; Taille maximale d'upload de fichier
upload_max_filesize = 800M
; Nombre maximum de variables d'entrée
; Critique pour les imports avec beaucoup de colonnes
max_input_vars = 50000
; Temps de lecture des données d'entrée (-1 = illimité)
max_input_time = -1
Redémarrez Apache ou PHP-FPM après modification :
# Apache
sudo systemctl restart apache2
# PHP-FPM (PrestaShop 8.x recommande FPM)
sudo systemctl restart php8.2-fpm
Configuration MySQL / MariaDB
Les imports volumineux peuvent aussi être bloqués côté base de données. Éditez ou créez le fichier de configuration MySQL :
# MariaDB (PrestaShop 8.x)
sudo nano /etc/mysql/mariadb.conf.d/99-prestashop.cnf
# MySQL classique
sudo nano /etc/mysql/mysql.conf.d/99-prestashop.cnf
[client]
port = 3306
default-character-set = utf8mb4
[mysqld]
max_allowed_packet = 64M
innodb_buffer_pool_size = 256M
wait_timeout = 28800
interactive_timeout = 28800
[mysqldump]
max_allowed_packet = 64M
PrestaShop 8.x : Utilisez
utf8mb4au lieu deutf8pour le jeu de caractères. C'est le standard depuis PrestaShop 1.7.6 et c'est indispensable pour gérer correctement les caractères spéciaux et emojis dans les descriptions produits.
sudo systemctl restart mariadb
Étape 3 — Diagnostiquer les problèmes d'affichage des réductions
Si les données sont en base mais les réductions ne s'affichent pas, plusieurs pistes sont à explorer.
Vider tous les caches
PrestaShop utilise plusieurs couches de cache qui peuvent retenir des prix obsolètes :
# Vider le cache Smarty (PS 1.6/1.7)
rm -rf var/cache/prod/*
rm -rf var/cache/dev/*
# PrestaShop 8.x — via la console Symfony
php bin/console cache:clear --env=prod
Dans le back-office : Paramètres avancés → Performances → Vider le cache.
Vérifier le format du CSV pour les réductions
Le format des colonnes de réduction dans le CSV PrestaShop est strict :
Piège fréquent : Excel transforme les décimaux avec une virgule (10,00) selon les paramètres régionaux. PrestaShop attend un point (10.00). Ouvrez votre CSV dans un éditeur de texte brut pour vérifier.
Vérifier les prix spécifiques dans le back-office
Accédez à Catalogue → Produits → [Produit] → onglet Prix et vérifiez que :
- La réduction est bien listée dans la section "Prix spécifiques"
- Les dates de validité sont correctes (attention aux dates passées)
- Le type de réduction correspond (montant vs pourcentage)
- La devise est correcte
- Le groupe client ciblé est le bon
Étape 4 — Spécificités PrestaShop 8.x pour l'import
PrestaShop 8.x a modernisé le système d'import avec plusieurs améliorations :
- **Import par lots (batch)** : les produits sont traités par paquets, ce qui réduit la consommation mémoire
- **Meilleure gestion des erreurs** : un rapport détaillé est généré en fin d'import
- **Support natif UTF-8MB4** : fini les problèmes d'encodage sur les descriptions
Pour les très gros catalogues (+10 000 produits), privilégiez l'import en ligne de commande :
php bin/console prestashop:import \
--file=catalogue.csv \
--entity=products \
--lang=1 \
--separator=";"
Bonnes pratiques pour un import CSV fiable
- **Testez d'abord avec 5 produits** — Importez un échantillon réduit incluant des produits avec réductions pour valider le format avant l'import complet
- **Sauvegardez la base avant chaque import** — `mysqldump -u user -p prestashop > backup_avant_import.sql`
- **Utilisez le séparateur point-virgule** — Le séparateur par défaut de PrestaShop est `;`, pas la virgule
- **Encodez en UTF-8 sans BOM** — Vérifiable avec `file -bi votre_fichier.csv` sous Linux
- **Désactivez les modules de cache pendant l'import** — Les modules de cache tiers peuvent interférer avec l'indexation des prix
- **Réindexez après l'import** — Back-office → Paramètres avancés → Recherche → Réindexer, ou `php bin/console prestashop:search:reindex`
Questions fréquentes
Tout ce que vous devez savoir sur ce sujet.
Un projet PrestaShop ?
Discutons-en directement.
193 projets livrés
Lire sur le blog

Alexandre Carette
Expert PrestaShop & Architecture E-commerce
Développeur PrestaShop depuis 2014, 193 projets livrés. Je conçois des architectures headless Nuxt + PrestaShop et des outils d'automatisation IA pour les e-commerçants.