Le fichier de configuration de l'ordre de chargement de données détermine la séquence de chargement par l'utilitaire de chargement de données. Le fichier de chargement de données comporte un pointeur vers le fichier des paramètres d'environnement, le fichier de configuration d'objet métier et le fichier d'entrée. Vous pouvez également définir le mode de chargement à utiliser par l'utilitaire de chargement de données.
Pourquoi et quand exécuter cette tâche
Les fichiers échantillons de configuration de commande de charge sont fournis pour le chargement des différents objets de composants. Ces fichiers sont inclus dans les répertoires spécifiques à chaque composant dans le répertoire suivant :
utilities_root/samples/DataLoad
WCDE_installdir/samples/DataLoad
Procédure
-
Créez une copie d'un exemple de fichier wc-dataload-object.xml et renommez le fichier.
Par exemple, copiez le fichier wc-dataload-catalog-entry.xml dans le répertoire du composant Catalog.
-
Ouvrez le nouveau fichier de configuration de l'ordre de chargement des données pour l'éditer.
-
Spécifiez le fichier de configuration de l'environnement de chargement de données.
-
Recherchez l'élément
<_config:DataLoadEnvironment>.
-
Changez la valeur de l'attribut
configFile de cet élément pour qu'elle corresponde au chemin d'accès relatif au fichier de configuration de l'environnement de chargement de données.
Remarque : Cette valeur est remplacée si un fichier de configuration d'environnement est spécifié dans la ligne de commande lors de l'exécution de l'utilitaire de chargement de données à partir de Utility server Docker container.
Bien que le fichier de configuration d'environnement spécifié dans la ligne de commande prenne le pas, l'élément doit toujours exister dans le fichier de configuration de l'environnement de chargement de données.
-
Configurez l'ordre de chargement pour le processus de chargement de données.
-
Recherchez l'élément
<_config:LoadOrder>.
- Facultatif :
Indiquez la valeur de l'attribut
commitCount. Le nombre de validations identifie le nombre de lignes qui sont vidées lors d'une transaction unique avant l'émission d'une validation.
Les valeurs ci-après peuvent être définies pour cet attribut.
- 0
- Aucune validation n'intervient jusqu'à ce que l'élément de chargement ait terminé le traitement de ses données en entrée. Si une exception est émise, les enregistrements dont le traitement abouti peuvent être validés. Si l'exception est une exception SQL, l'utilitaire restaure toutes les données qui ont été traitées après le dernier enregistrement validé. Si un type différent d'exception est émis, il restaure uniquement les données dont le traitement a échoué. L'opération de chargement valide les enregistrements dont le traitement a abouti.
- N
- Où N est un entier positif. Le nombre de validations spécifie combien de lignes sont traitées avant l'appel de validation dans la base de données. La valeur par défaut est 1.
Remarque : Si des erreurs se produisent pendant le chargement des données, une exception SQL indique à la base de données qu'elle doit revenir à la dernière ligne validée. Les données figurant après la dernière ligne validée et allant jusqu'à la ligne d'erreur ne sont pas validées dans la base de données. Les autres erreurs n'entraînent pas d'annulation. Pour les autres erreurs, seules les données de la ligne présentant l'erreur ne sont pas validées dans la base de données. Toutes les autres données sont validées. Par exemple, si l'attribut commitCount a pour valeur N = 10 et qu'une erreur survient à la ligne 25 :
- Si l'erreur est une exception SQL, les données qui se trouvent entre la ligne 1 et la ligne 20 sont validées dans la base de données. Les données qui se trouvent entre la ligne 21 et la ligne 25 ne sont pas ajoutées à la base de données.
- Si l'erreur n'est pas une exception SQL, les données qui se trouvent entre la ligne 1 et la ligne 24 sont validées dans la base de données. Les données qui se trouvent à la ligne 25 ne sont pas ajoutées à la base de données.
Vous pouvez inclure la propriété de configuration "rollbackForAnyException" pour contrôler les données que l'utilitaire restaure lorsqu'une exception est émise. Si la propriété a pour valeur true, l'utilitaire restaure toutes les données qui ont été traitées après le dernier enregistrement validé à chaque fois qu'une exception survient. Cette restauration a lieu quel que soit le type d'exception. Vous pouvez définir cette propriété dans la configuration de chaque élément de chargement ou dans l'élément <_config:LoadOrder> parent pour qu'elle s'applique à tous les éléments de chargement.
- Facultatif :
Indiquez la valeur de l'attribut
batchSize. Les transactions de base de données sont chargées en lots. Ces lots sont conservés dans la mémoire Java jusqu'à un nombre suffisant pour un vidage. Ensuite, le contenu des lots est stocké dans la base de données sous la forme d'un paquet unique de données. Les lots sont stockés dans la base de données jusqu'à la validation suivante et le chargement des modifications par la base de données.
Les valeurs ci-après peuvent être définies pour cet attribut.
- 0
- Utilise la mise à jour de lot JDBC. Les données en entrée de tous les lots de l'élément de chargement sont traitées.
- N
- Où N est une valeur entière positive qui indique le nombre de lignes de données qui sont traitées avant l'exécution du lot JDBC. Le lot JDBC est activé si, et seulement si, la taille de lot est supérieure à 1. La valeur batchSize doit être inférieure ou égale à celle de commitCount. La taille de lot par défaut est 1, ce qui indique que le lot JDBC n'est pas activé et que les instructions SQL sont exécutées une par une directement.
- Facultatif :
Indiquez la valeur de l'attribut
dataLoadMode. Le mode de chargement de données peut être Insert, Update ou Delete.
- Insérer
- Toutes les données sont insérées dans la base de données. L'utilitaire génère des instructions SQL d'insertion. Ce mode est recommandé pour un chargement initial des données. Si votre fichier de données contient des indicateurs de suppression (delete), ils sont ignorés.
En mode insertion, vous pouvez spécifier une plage de clés primaires à utiliser si l'objet n'existe pas dans la base de données et requiert la génération d'une nouvelle clé. Spécifiez la valeur dans l'élément
<_config:BusinessObjectMediator>. Par exemple :
startKey="100001" endKey="200001"
Les éditeurs de données pris en charge en mode insertion sont les suivants :
- Editeur de données JDBC
- Editeur de données de chargement natif
Remarque : L'exécution de l'utilitaire de chargement de données en mode insertion peut améliorer les performances du chargement initial de grandes quantités de données. Toutefois, lorsque vous exécutez l'utilitaire de chargement de données en mode insertion, celui-ci ne vérifie pas votre base de données avant de charger vos données d'entrée. Il ne détermine pas si les objets de données que vous créez existent déjà dans votre base de données avant de tenter de charger et de créer des objets de données. Ce comportement peut entraîner l'échec du processus de chargement lorsque l'utilitaire tente de créer les objets de données qui existent déjà dans votre base de données.
Par exemple, si votre fichier d'entrée est un fichier CSV contenant une ligne qui crée un produit et une description de produit, et si le fichier contient une deuxième ligne qui charge le même produit dont la description est dans une autre langue, le processus de chargement échoue. Etant donné que l'utilitaire crée le produit et la description de la première ligne, lorsqu'il atteint la deuxième ligne, il tente de créer le produit à nouveau. Comme le produit existe, le chargement échoue. Pour charger ces données de produit et de description, vous pouvez utiliser l'une des méthodes suivantes :
- Exécutez l'utilitaire de chargement de données en mode remplacement.
- Exécutez l'utilitaire de chargement de données en mode insertion, mais chargez les informations de produit et de description séparément. Utilisez un fichier d'entrée pour charger les informations de produit, et un autre fichier d'entrée pour charger toutes les descriptions.
Pour plus d'informations sur la configuration de l'utilitaire de chargement de données pour qu'il s'exécute en mode insertion, voir Scénario : Chargement initial.
- Remplacer
- Valeur par défaut : toutes les données sont remplacées dans la base de données. L'utilitaire génère des instructions SQL d'insertion, de mise à jour et de suppression en fonction des données. Le mode remplacement remplace les données existantes dans la base de données par les données d'entrée. Ainsi, si des informations de colonne sont absentes des données d'entrée, la colonne est mise à jour avec la valeur Null ou la valeur par défaut, si celle-ci existe. Par exemple :
- Si un enregistrement (ligne) de votre fichier de données représente un nouvel objet, il est inséré.
- Si l'objet figure déjà dans la base de données, il est remplacé.
- Si les données comporte un indicateur qui spécifie que cet objet doit être supprimé, l'objet est supprimé.
En mode remplacement, ne spécifiez pas de valeur de plage de clés primaires car vous risquez de provoquer des conflits de clé dans la base de données.
Les éditeurs de données pris en charge en mode remplacement sont les suivants :
- Editeur de données JDBC
- Editeur de données de chargement natif
Remarque : Vous pouvez éviter tout remplacement accidentel des informations dans la base de données par des données de type null. Modifiez les données d'entrée d'origine utilisées dans le chargement initial lorsque vous remplacez un sous-ensemble des données d'origine. Ne spécifiez pas de zones vides dans votre fichier source, sauf si vous désirez que ces zones contiennent des données Null dans la base de données.
Pour plus d'informations sur la configuration de l'utilitaire de chargement de données pour qu'il s'exécute en mode remplacement, voir Scénario : Chargement delta.
- Mettre à jour
- Les données d'entrée de catalogue et de description d'entrée de catalogue spécifiées sont mises à jour dans la base de données. L'utilitaire compare les données d'entrée de catalogue dans le fichier d'entrée avec les données correspondantes pour les entrées de catalogue dans la base de données. Ensuite, il remplace ou ajoute les données nouvelles ou modifiées uniquement pour les colonnes qui sont spécifiées dans le fichier d'entrée. Les autres colonnes restent inchangées.
Le mode mise à jour ne prend en charge que l'éditeur de données JDBC.
Remarque : l'utilitaire de chargement de données peut s'exécuter en mode mise à jour pour ne charger que les informations d'entrée de catalogue ou de description d'entrée de catalogue.
Pour plus d'informations sur la configuration de l'utilitaire de chargement de données pour qu'il s'exécute en mode mise à jour, voir Scénario : Chargement de mise à jour d'entrée de catalogue.
- Supprimer
- Toutes les données qui sont identifiées dans le fichier d'entrée et qui se trouvent dans la base de données sont supprimées de la base de données. Dans ce mode, l'utilitaire ignore la valeur qui figure dans l'élément ou dans la colonne Delete dans un fichier d'entrée. Il génère les instructions SQL de suppression qui sont nécessaires pour supprimer les objets dans le fichier d'entrée. Lorsque vous exécutez l'utilitaire dans ce mode, l'éditeur de données JDBC seulement est pris en charge.
Remarque : Si votre site utilise la recherche
HCL Commerce, il se peut que l'index de recherche delta ne soit pas régénéré correctement lorsque vous supprimez certains objets de catalogue avec l'utilitaire de chargement de données en mode suppression. Lorsque vous supprimez un objet enfant d'une entrée de catalogue ou d'une catégorie avec l'utilitaire en mode suppression, l'objet enfant et l'objet parent sont supprimés de la régénération de l'index de recherche delta. Suite à cette suppression, il se peut que la catégorie ou l'entrée de catalogue parent ne soit plus indexée ou ne s'affiche plus correctement dans la boutique en ligne.
Servez-vous de l'utilitaire en mode remplacement pour supprimer des objets de catalogue lorsque votre site utilise la recherche HCL Commerce. Pour supprimer des objets avec l'utilitaire en mode remplacement, spécifiez la valeur 1 dans la colonne Delete d'un objet dans votre fichier d'entrée. Si vous décidez de supprimer des objets de catalogue avec l'utilitaire en mode suppression, exécutez une régénération d'index complète une fois l'opération de chargement terminée.
- Facultatif :
Indiquez la valeur de l'attribut
maxError. Vous pouvez définir la tolérance d'erreur maximale pour garantir l'exécution de l'utilitaire de chargement de données, quelles que soient les erreurs qui surviennent.
Remarque : Si vous utilisez la classe de lecteur de données XML pour charger des fichiers d'entrée XML, ne définissez pas l'attribut maxError. Si vous définissez cet attribut, vous devez définir la valeur 1 pour l'attribut. Si vous définissez une valeur différente, vous pouvez rencontrer un comportement inattendu.
Si vous utilisez une classe de lecteur de données CSV, les valeurs suivantes peuvent être définies pour cet attribut :
- 0
- Poursuivre l'exécution de l'utilitaire de chargement de données quel que soit le nombre d'erreurs se produisant.
- N
- Où N est un entier positif. Le nombre d'erreurs maximal spécifie le niveau de tolérance d'erreurs lors du chargement des données d'un élément de chargement. La valeur par défaut est 1.
-
Spécifiez les éléments de configuration d'élément de chargement pour chaque élément de chargement requis. Spécifiez les informations d'élément de chargement dans l'élément
<_config:LoadItem>. Dans cet élément, vous devez inclure l'attribut name afin d'identifier le nom de l'élément de chargement. Vous devez aussi inclure l'attribut businessObjectConfigurationFile pour identifier le fichier de configuration d'objet métier pour l'élément de chargement.
Par exemple,
<_config:LoadItem name="CatalogGroup" businessObjectConfigFile=
"wc-loader-catalog-group.xml" >
-
Dans l'élément
<_config:LoadItem>, spécifiez l'emplacement de source de données pour le ou les fichiers d'entrée contenant les informations d'élément de chargement. Spécifiez ces informations avec l'attribut location dans l'élément <_config:DataSourceLocation>.
Par exemple, pour un fichier spécifique :
<_config:DataSourceLocation location="CatalogGroups\CatalogGroups.xml"/>
Par exemple, pour un répertoire :
<_config:DataSourceLocation location="CatalogGroups"/>
Si vous spécifiez un répertoire pour un élément de chargement :
- Tous les fichiers du répertoire doivent présenter le même type de chargement pour éviter une défaillance de l'utilitaire de chargement de données.
- Tous les fichiers du répertoire sont chargés en série, triés par nom de fichier dans l'ordre croissant.
- Facultatif :
Incluez toute autre propriété de configuration requise.
Incluez ces propriétés dans un élément <_config:property> dans l'élément <_config:LoadOrder> ou <_config:Loaditem>. Si cette balise de propriété est spécifiée dans un élément <_config:LoadOrder>, la propriété s'applique à tous les éléments de chargement. Si elle est spécifiée dans un élément <_config:Loaditem>, elle s'applique à cet élément de chargement spécifique seulement.
Par exemple, si vous voulez générer l'index de recherche, incluez la propriété de configuration buildSearchIndex dans le fichier de configuration de l'ordre de chargement.
-
Enregistrez et fermez le fichier.
L'exemple suivant présente un fichier de configuration pour des données de catalogue.
<?xml version="1.0" encoding="UTF-8" ?>
<_config:DataLoadConfiguration xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://www.ibm.com/xmlns/prod/commerce/foundation/config
../../../../xml/config/xsd/wc-dataload.xsd"
xmlns:_config="http://www.ibm.com/xmlns/prod/commerce/foundation/config">
<_config:DataLoadEnvironment configFile="wc-dataload-env.xml" />
<_config:LoadOrder commitCount="100" batchSize="1" dataLoadMode="Replace">
<_config:property name="firstTwoLinesAreHeader" value="true" />
<_config:LoadItem name="CatalogGroup" businessObjectConfigFile="wc-loader-catalog-group.xml">
<_config:property name="validateCatalogGroup" value="true" />
<_config:DataSourceLocation location="CatalogGroups.csv" />
</_config:LoadItem>
<_config:LoadItem name="CatalogEntry" businessObjectConfigFile="wc-loader-catalog-entry.xml">
<_config:DataSourceLocation location="CatalogEntries.csv" />
</_config:LoadItem>
</_config:LoadOrder>
</_config:DataLoadConfiguration>
- Facultatif :
Si vous configurez l'ordre de chargement des données pour des processus de chargement de données de routine, vous pouvez configurer l'exécution d'un préprocesseur des différences entre les fichiers.
Vous pouvez exécuter un prétraitement des différences de fichiers pour des chargements de données de routine afin d'améliorer les performances de l'utilitaire de chargement de données lors du chargement de ces fichiers. Ce préprocesseur vous permet de comparer deux fichiers d'entrée, comme un fichier chargé précédemment et une nouvelle version de ce fichier. Le préprocesseur génère un fichier de différences contenant uniquement les enregistrements du nouveau fichier qui ne figurent pas dans l'ancien fichier ou les enregistrements qui ont été modifiés par rapport à l'ancien fichier. L'utilitaire de chargement de données peut alors charger ce fichier de différences. Si les fichiers que vous chargez régulièrement contiennent un grand nombre d'enregistrements précédemment chargés, l'exécution de cette différence de fichiers peut permettre de réduire les temps de chargement. L'identification des différences entre les fichiers permet de réduire le temps de chargement requis pour charger vos mises à jour de routine dans votre base de données HCL Commerce, de réduire le temps d'utilisation du serveur, et d'améliorer les performances du serveur.
Vous pouvez configurer le préprocesseur de différence de fichier d'utilitaire de chargement des données pour comparer des fichiers selon les valeurs dans chaque colonne, au lieu d'enregistrements complets pour identifier les enregistrements modifiés. Vous pouvez également configurer le préprocesseur de différence de fichier pour ignorer des colonnes spécifiques lorsque le processus compare les fichiers.
Pour plus d'informations sur ce préprocesseur, voir Exécution du préprocesseur des différences entre les fichiers de chargement de données.
-
Enregistrez et fermez le fichier.