Exemple : Insertion et remplacement d'offres en une seule devise
L'utilitaire de chargement des données propose deux modes de chargement des offres en une seule devise. Utilisez le mode insertion pour ajouter une offre n'existant pas encore dans la base de données. Utilisez le mode remplacement pour remplacer une offre existante par une offre différente. Le comportement de chaque mode varie selon que l'identificateur a été spécifié ou non.
Cet exemple utilise un fichier CSV pour expliquer comment insérer, remplacer ou supprimer vos données. Vous pouvez aussi créer et utiliser un fichier au format XML pour insérer, remplacer ou supprimer vos données. Si vous choisissez de créer et d'utiliser un fichier au format XML, assurez-vous que vos éléments XML utilisent les mêmes noms que ceux des colonnes CSV.
- Mode insertion
-
- Identificateur spécifié : L'insertion échoue si une offre avec la même combinaison existe dans la base de données.
- Identificateur non spécifié : L'offre est insérée avec succès.
- Mode de remplacement
-
- Identificateur spécifié : Met à jour l'offre spécifiée en fonction de l'identificateur. Si une offre avec cet identificateur n'existe pas dans la base de données, l'offre est insérée.
- Identificateur non spécifié : Chaque ligne d'entrée du fichier CSV est résolue en une paire de valeurs : (CATENTRY_ID, TRADEPOSCN_ID). Le médiateur recherche dans la table OFFER le nombre d'enregistrements ayant la même valeur de paire.
- L'offre existante est mise à jour directement si le nombre d'enregistrements avec la même paire dans la base de données est égal à un.
- Si le nombre d'enregistrements avec la même paire dans la base de données est supérieur à un, toutes les offres existantes sont supprimées et les nouvelles offres sont insérées à partir du fichier CSV.
Fichier CSV avec exemples de données d'offre pour une seule devise
firstLineIsHeader du fichier de configuration de chargement des données de la liste de prix. firstLineIsHeader est un attribut de l'élément <_config:DataReader>. - firstLineIsHeader
-
- true
- Indique que la première ligne du fichier CSV sera traitée comme des données de nom de colonne et ne sera pas insérée dans la base de données.
- false
- Indique que la première ligne du fichier CSV contient des données devant être lues et insérées dans la base de données.
Standard Price List,1000573,1100456,3,2009-03-15 15:47:00.0,2009-05-15
15:47:00.0,each,10,0,2009-03-16 15:47:00.0,Elegant wine glass,4.50,USD
Holiday price list,1000574,1100457,5,2009-12-15 15:47:00.0,2009-12-31 15:47:00.0,each,5,0,2009-11-28 15:47:00.0,
Decorative bed cover,55.84,BRL
Legacy system price list,1000575,1100458,2,2009-02-15 15:47:00.0,2009-06-02 15:47:00.0,each,10,0,2009-02-22
15:47:00.0,Old Cologne,68.27,CNY
Overstock price list,1000576,1100459,3,2009-03-15 15:47:00.0,2009-03-31 15:47:00.0,each,10,0,2009-03-16
15:47:00.0,Candle holder,2.32,EUR
définitions de colonne CSV et d'élément XML
L'ordre des colonnes est défini dans le fichier de configuration de chargement des données d'offres. Reportez-vous à l'attribut number dans l'élément <_config:Data>.
- PriceListUniqueID
- (Facultatif, Chaîne) Identificateur de la liste de prix. S'il existe un mappage de données pour la valeur UniqueID de liste de prix dans le fichier de configuration de chargement des données de liste de prix, la valeur uniqueID est requise dans le fichier CSV.
- PriceListName
- (Optionnel, Chaîne) Nom de la liste de prix qui contient cette offre. Lors du chargement d'une offre, le nom ou l'élément UniqueID de la liste de prix est facultatif. Lorsqu'aucun des deux n'est fourni dans le fichier CSV, le nom de la liste de prix par défaut du magasin est utilisé pour le chargement. Si l'un des eux est fourni, le nom indiqué est utilisé pour le chargement. Si les deux sont fournis dans le fichier CSV, l'élément uniqueID de la liste de prix est utilisé pour le chargement.
- CatentryUniqueID
- (Facultatif, Chaîne) Identificateur unique de l'entrée de catalogue associée. Lorsqu'il existe un mappage de données dans le fichier de configuration des données d'offre, l'élément CatentryUniqueID est obligatoire. Si les deux données sont fournies dans le fichier CSV, la valeur de CatentryUniqueID est utilisée pour le chargement.
- CatentryPartNumber
- (Requis, chaîne) Référence de l'entrée de catalogue pour laquelle cette offre est définie. Lorsque vous chargez une offre, le nom CatentryPartNumber ou CatentryUniqueID est requis. Lorsqu'aucun des deux n'est fourni dans le fichier CSV, le chargement de l'offre échoue. Si l'un des deux est fourni, l'élément catentry indiqué est utilisé pour le chargement. Si les deux données sont fournies dans le fichier CSV, la valeur de CatentryUniqueID est utilisée pour le chargement.
- Identificateur
-
(Facultatif, double) Nombre qui identifie l'offre de façon unique lorsque la valeur de la colonne est combinée avec des valeurs d'ID d'entrée de catalogue et d'ID de liste de prix uniques pour l'offre. Mappé à la colonne de base de données OFFER.IDENTIFIER.
- Priorité
- (Optionnel, Double) Si plusieurs offres sont en vigueur simultanément, celle dont la priorité est la plus élevée est utilisée. Si elle n'est pas définie dans le fichier d'entrée, elle reçoit la valeur par défaut "0.0".
- StartDate
- (Facultatif, Horodatage) Début de la plage de dates pendant laquelle l'offre est en vigueur. Utilisez le format
yyyy-mm-dd hh:mm:ss.millis. - EndDate
- (Optionnel, Horodatage) Fin de la plage de dates pendant laquelle l'offre est en vigueur. Utilisez le format
yyyy-mm-dd hh:mm:ss.millis. - QuantityUnitIdentifier
- (Optionnel, String) Unité de mesure utilisée dans les champs MinimumQuantity (quantité minimale) et MaximumQuantity (quantité maximale).
- MaximumQuantity
- (Facultatif, Double) Quantité maximale pouvant être achetée dans une même commande au titre de cette offre.
- MinimumQuantity
- (Optionnel, Double) Quantité minimale pouvant être achetée dans une même commande au titre de cette offre.
- LastUpdate
- (Optionnel, Horodatage) Date et heure de dernière mise à jour de l'offre. Utilisez le format
yyyy-mm-dd hh:mm:ss.millis. - Description
- (Optionnel, Chaîne) Description de cette offre.
- Prix
- (Facultatif, valeur décimale) Prix de l'offre dans la devise voulue.
- Devise
- (Facultatif, Chaîne) Devise spécifiée pour le prix de l'offre.
Données de mappage
Le fragment suivant du fichier d'exemple de configuration illustre comment mapper chaque colonne de données dans le fichier CSV source à une valeur.
<_config:DataSource>
<_config:Data>
<_config:column number="1" name="PriceListUniqueId" />
<_config:column number="2" name="PriceListName" />
<_config:column number="3" name="CatentryUniqueId" />
<_config:column number="4" name="CatentryPartNumber" />
<_config:column number="5" name="Identifier" />
<_config:column number="6" name="Precedence" />
<_config:column number="7" name="StartDate" />
<_config:column number="8" name="EndDate" />
<_config:column number="9" name="QuantityUnitIdentifier"/>
<_config:column number="10" name="MinimumQuantity" />
<_config:column number="11" name="MaximumQuantity" />
<_config:column number="12" name="LastUpdate" />
<_config:column number="13" name="Description" />
<_config:column number="14" name="Price" />
<_config:column number="15" name="Currency" />
</_config:Data>
</_config:DataSource>
L'attribut number dans l'élément <_config:column> définit l'ordre des colonnes dans le fichier des enregistrements CSV. L'attribut name définit le nom de colonne utilisé dans l'élément <_config:DataMapping>.
<_config:DataMapping>
<_config:mapping xpath="PriceListIdentifier/UniqueID" value="PriceListUniqueId"
valueFrom="InputData" />
<_config:mapping xpath="PriceListIdentifier/ExternalIdentifier/Name" value="PriceListName"
valueFrom="InputData" />
<_config:mapping xpath="PriceEntry[0]/CatalogEntryIdentifier/UniqueID"
value="CatentryUniqueId" valueFrom="InputData" />
<_config:mapping xpath="PriceEntry[0]/CatalogEntryIdentifier/ExternalIdentifier/PartNumber"
value="CatentryPartNumber" valueFrom="InputData" />
<_config:mapping xpath="PriceEntry[0]/Qualifier" value="Identifier" valueFrom="InputData" />
<_config:mapping xpath="PriceEntry[0]/Precedence" value="Precedence" valueFrom="InputData" />
<_config:mapping xpath="PriceEntry[0]/StartDate" value="Start Date" valueFrom="InputData" />
<_config:mapping xpath="PriceEntry[0]/EndDate" value="End Date" valueFrom="InputData" />
<_config:mapping xpath="PriceEntry[0]/QuantityUnit" value="QuantityUnitIdentifier"
valueFrom="InputData" />
<_config:mapping xpath="PriceEntry[0]/MaximumQuantity" value="MaximumQuantity"
valueFrom="InputData" />
<_config:mapping xpath="PriceEntry[0]/MinimumQuantity" value="MinimumQuantity"
valueFrom="InputData" />
<_config:mapping xpath="PriceEntry[0]/LastUpdate" value="LASTUPDATE" valueFrom="InputData" />
<_config:mapping xpath="PriceEntry[0]/Description/Value" value="Description"
valueFrom="InputData" />
<_config:mapping xpath="PriceEntry[0]/Price/Value" value="Price" valueFrom="InputData" />
<_config:mapping xpath="PriceEntry[0]/Price/Currency" value="Currency" valueFrom="InputData" />
</_config:DataMapping>L'attribut value dans l'élément <_config:DataMapping> doit être cohérent avec l'attribut name de l'article correspondant dans l'élément <_config:column>. Les deux attributs sont sensibles à la casse.Médiateur d'objet métier
Le nom de classe de médiateur est com.ibm.commerce.price.dataload.mediator.OfferMediator.