Ejemplo: eliminar ofertas con varias monedas

El programa de utilidad de carga de datos ofrece dos modalidades para eliminar ofertas con varias monedas definidas en un archivo de carga de la base de datos: eliminar y sustituir. Utilice la modalidad de supresión para eliminar ofertas si la modalidad está establecida en "Delete" en el archivo de configuración de carga de datos. Utilice la modalidad de sustitución para eliminar ofertas si la modalidad está establecida en "Replace" en el archivo de configuración de carga de datos. El comportamiento de cada modalidad depende de si se especifica o no el identificador.

Este ejemplo utiliza un archivo CSV para mostrar cómo insertar, sustituir o eliminar los datos. También puede crear y utilizar un archivo con formato XML para insertar, sustituir o eliminar los datos. Si decide crear y utilizar un archivo con formato XML, asegúrese de que los elementos XML utilizan los mismos nombres que los nombres de columna CSV.

Archivo CSV con datos de oferta de ejemplo a eliminar

Modalidad de sustitución
  • Identificador especificado: Solo suprime la oferta especificada de acuerdo con el Identificador cuando el distintivo de supresión está establecido. Si la oferta con el Identificador no existe en la base de datos, no se suprime ninguna oferta.
  • Identificador no especificado: Suprime todas las ofertas con la misma pareja en la base de datos cuando el distintivo de supresión está establecido.
Modalidad de supresión
Hace caso omiso del distintivo de supresión y siempre suprime ofertas cuando:
  • Identificador especificado: Solo suprime la oferta especificada de acuerdo con el Identificador. Si la oferta con el Identificador no existe en la base de datos, no se suprime ninguna oferta.
  • Identificador no especificado: Suprime todas las ofertas con la misma pareja en la base de datos.
Para eliminar una oferta, añada una columna de supresión al archivo CSV. El archivo contiene datos de oferta de ejemplo. Algunas ofertas se suprimen y otras se insertan o sustituyen, dependiendo del estado del distintivo de supresión. Cada columna está delimitada por una coma. El ejemplo siguiente muestra el archivo CSV sin formato:
Nota: El siguiente ejemplo se separa en varias líneas para facilitar la lectura. Si utiliza este ejemplo puede incluirlo en el archivo como una sola línea sin formato.
Standard Price List,1000573,1100456,3,2009-03-15 15:47,2009-05-15 15:47,each,10,0,2009-03-16 15:47:00.0,
Elegant wine glass,4.50,10.05,30.75,3.48,442.56,6074.84,152.42,y
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,25,55.84,170.84,19.31,2,458.61,33691.25,846.71
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,9.99,22.31,68.27,7.72,982.46,13,463.02,338.35
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,3,6.70,20.50,2.32,295.03,4042.95,101.61,y
La primera fila del archivo CSV también pueden ser nombres de columna, lo que depende del atributo firstLineIsHeader del archivo de configuración de carga de datos de lista de precios. firstLineIsHeader es un atributo del elemento <_config:DataReader>.
firstLineIsHeader
true
Indica que la primera línea del archivo CSV se trata como datos de nombre de columna y no se inserta en la base de datos.
false
Indica que la primera línea del archivo CSV son datos que se leerán e insertarán en la base de datos.
Comportamiento
  1. eliminar oferta con nombre de lista de precios y número de pieza de entrada de catálogo

    En este escenario, no se genera ninguna excepción si la oferta no existe en la base de datos. La lista de precios y la entrada de catálogo especificadas no están relacionadas con ninguna oferta. No se suprime ninguna oferta.

    Si la oferta existe en la base de datos, la oferta se suprime satisfactoriamente.

  2. eliminar oferta con ID exclusivo de lista de precios e ID exclusivo de entrada de catálogo.

    No se genera ninguna excepción en este escenario.

Definiciones de columnas CSV y de elementos XML

El orden de las columnas se define en el archivo de configuración de carga de datos de oferta. Consulte el atributo number en el elemento <_config:Data>.

PriceListUniqueID
(Opcional, Serie) El identificador de la lista de precios. Cuando hay una correlación de datos para el ID exclusivo de lista de precios en el archivo de configuración de carga de datos de lista de precios, el ID exclusivo es necesario en el archivo CSV.
PriceListName
(Opcional, String) El nombre de la lista de precios que contiene esta oferta. Al eliminar una oferta, el nombre de la lista de precios o el ID exclusivo de la lista de precios es opcional. Si no se proporciona ninguno de ellos en el archivo CSV, la lista de precios predeterminada de la tienda se utiliza para la supresión. Si se proporciona alguno de ellos, la lista de precios proporcionada se utiliza para la supresión. Si se proporcionan ambos en el archivo CSV, el ID exclusivo de la lista de precios se utiliza para la supresión.
CatentryUniqueID
(Opcional, Serie) El identificador exclusivo para la entrada de catálogo relacionada. Cuando hay una correlación de datos en el archivo de configuración de carga de datos de oferta, la columna CatentryUniqueID es necesaria. Si se proporcionan ambos en el archivo CSV, el ID exclusivo de la entrada de catálogo se utiliza para la supresión.
CatentryPartNumber
(Opcional, String) El número de pieza de la entrada de catálogo para la que se ha definido esta oferta. Al eliminar una oferta, el nombre CatentryPartNumber o CatentryUniqueID es necesario. Si no se proporciona ninguno de ellos en el archivo CSV, la supresión de la oferta falla. Si se proporciona alguno de ellos, la entrada de catálogo proporcionada se utiliza para la supresión. Si se proporcionan ambos en el archivo CSV, el ID exclusivo de la entrada de catálogo se utiliza para la supresión.
Identificador

(Opcional, Doble) El número que identifica de forma exclusiva la oferta cuando el valor para la columna se combina con los valores de ID de entrada de catálogo exclusivo e ID de lista de previos para la oferta. Se correlaciona con la columna de base de datos OFFER.IDENTIFIER.

Precedence
(Opcional, Doble) Cuando hay más de una oferta en vigor en un momento determinado, se utiliza la que tiene la prioridad más alta. Si no se especifica en el archivo de entrada, el valor se establece en "0.0".
StartDate
(Opcional, Indicación de fecha y hora)El inicio del intervalo de tiempo durante el que esta oferta es efectiva. Utilice el formato yyyy-mm-dd hh:mm:ss.millis.
EndDate
(Opcional, Timestamp) El final del intervalo de tiempo durante el que esta oferta es efectiva. Utilice el formato yyyy-mm-dd hh:mm:ss.millis.
QuantityUnitIdentifier
(Opcional, String) La unidad de medida para Cantidad mínima y Cantidad máxima.
MaximumQuantity
(Opcional, Double) La cantidad máxima que se puede adquirir en un solo pedido bajo esta oferta.
MinimumQuantity
(Opcional, Double) La cantidad mínima que se puede adquirir en un solo pedido bajo esta oferta.
LastUpdate
(Opcional, Indicación de fecha y hora) La última vez que se actualizó la oferta. Utilice el formato yyyy-mm-dd hh:mm:ss.millis.
Descripción:
(Opcional, Serie) La descripción para esta oferta.
Price In USD
(Opcional, Decimal) El precio en dólares estadounidenses.
Price In BRL
(Opcional, Decimal) El precio en reales brasileños.
Price In CNY
(Opcional, Decimal) El precio en yuanes renminbi chinos.
Price In EUR
(Opcional, Decimal) El precio en euros.
Price In JPY
(Opcional, Decimal) El precio en yenes japoneses.
Price In KRW
(Opcional, Decimal) El precio en wons surcoreanos.
Price In TWD
(Opcional, Decimal) El precio en nuevos dólares taiwaneses.
eliminar
(Opcional, String) Indica si se ha de eliminar o no esta oferta con varias monedas. deleteValue es la serie que desea utilizar en el archivo CSV para indicar que desea eliminar esta oferta. En este ejemplo utilizamos la serie 'y'.

Correlación de datos

Este fragmento de código del archivo de configuración de ejemplo muestra cómo correlacionar cada columna de datos del archivo CSV de origen con un valor. También muestra cómo indicar qué columnas se han de eliminar.

<_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="PriceInUSD" />
	<_config:column number="15" name="PriceInBRL" />
	<_config:column number="16" name="PriceInCAD" />
	<_config:column number="17" name="PriceInCNY" />
	<_config:column number="18" name="PriceInEUR" />
	<_config:column number="19" name="PriceInJPY" />
	<_config:column number="20" name="PriceInKRW" />
	<_config:column number="21" name="PriceInTWD" />
	<_config:column number="22" name="Delete" />
</_config:Data>
El atributo number del elemento <_config:column> define el orden de las columnas en el archivo de registro CSV. El atributo name define el nombre de la columna que se utiliza en el elemento <_config:DataMapping>.
El siguiente fragmento de código del archivo de configuración de ejemplo muestra cómo correlacionar cada valor con una vía de acceso de esquema lógico de objeto de negocio.
<_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="StartDate" valueFrom="InputData" />
  <_config:mapping xpath="PriceEntry[0]/endDate" value="EndDate" valueFrom="InputData" />
  <_config:mapping xpath="PriceEntry[0]/lastUpdate" value="LastUpdate" valueFrom="InputData" />
  <_config:mapping xpath="PriceEntry[0]/quantityUnit" value="QuantityUnitIdentifier" 
    valueFrom="InputData" />
  <_config:mapping xpath="PriceEntry[0]/minimumQuantity" value="MinimumQuantity" 
    valueFrom="InputData" />
  <_config:mapping xpath="PriceEntry[0]/maximumQuantity" value="MaximumQuantity"
    valueFrom="InputData" />
  <_config:mapping xpath="PriceEntry[0]/Description/value" value="Description" 
    valueFrom="InputData" />
  <_config:mapping xpath="PriceEntry[0]/Price/Price/currency" value="USD" valueFrom="Fixed" />
  <_config:mapping xpath="PriceEntry[0]/Price/Price/value" value="PriceInUSD" 
    valueFrom="InputData" />
  <_config:mapping xpath="PriceEntry[0]/Price/AlternativeCurrencyPrice[0]/currency" 
    value="BRL" valueFrom="Fixed" />
  <_config:mapping xpath="PriceEntry[0]/Price/AlternativeCurrencyPrice[0]/value" 
    value="PriceInBRL" valueFrom="InputData" />
  <_config:mapping xpath="PriceEntry[0]/Price/AlternativeCurrencyPrice[1]/currency" 
    value="CAD" valueFrom="Fixed" />
  <_config:mapping xpath="PriceEntry[0]/Price/AlternativeCurrencyPrice[1]/value" value="PriceInCAD" 
    valueFrom="InputData" />
  <_config:mapping xpath="PriceEntry[0]/Price/AlternativeCurrencyPrice[2]/currency" 
    value="CNY" valueFrom="Fixed" />
  <_config:mapping xpath="PriceEntry[0]/Price/AlternativeCurrencyPrice[2]/value" value="PriceInCNY" 
    valueFrom="InputData" />
  <_config:mapping xpath="PriceEntry[0]/Price/AlternativeCurrencyPrice[3]/currency" 
    value="EUR" valueFrom="Fixed" />
  <_config:mapping xpath="PriceEntry[0]/Price/AlternativeCurrencyPrice[3]/value" 
    value="PriceInEUR" valueFrom="InputData" />
  <_config:mapping xpath="PriceEntry[0]/Price/AlternativeCurrencyPrice[4]/currency" 
    value="JPY" valueFrom="Fixed" />
  <_config:mapping xpath="PriceEntry[0]/Price/AlternativeCurrencyPrice[4]/value" 
    value="PriceInJPY" valueFrom="InputData" />
  <_config:mapping xpath="PriceEntry[0]/Price/AlternativeCurrencyPrice[5]/currency" 
    value="KRW" valueFrom="Fixed" />
  <_config:mapping xpath="PriceEntry[0]/Price/AlternativeCurrencyPrice[5]/value" 
    value="PriceInKRW" valueFrom="InputData" />
  <_config:mapping xpath="PriceEntry[0]/Price/AlternativeCurrencyPrice[6]/currency" 
    value="TWD" valueFrom="Fixed" />
  <_config:mapping xpath="PriceEntry[0]/Price/AlternativeCurrencyPrice[6]/value" 
    value="PriceInTWD" valueFrom="InputData" />
  <_config:mapping xpath="" value="Delete" valueFrom="InputData" deleteValue="y"/>
    </_config:DataMapping>
El atributo value del elemento <_config:DataMapping> debe ser coherente con el atributo name del elemento correspondiente en el elemento <_config:column>. Ambos atributos son sensibles a las mayúsculas y minúsculas.

Mediador de objetos de negocio

El nombre de la clase de mediador es com.ibm.commerce.price.dataload.mediator.OfferMediator.

Nota: Cuando utiliza un mediador que se proporciona con HCL Commerce con el programa de utilidad de carga de datos, el programa de utilidad de carga de datos da por supuesto que está cargando datos para todas las columnas para un objeto de negocio. Si desea actualizar los datos solamente en columnas específicas, configure una lista de exclusión de columnas para el proceso de carga. Una lista de exclusión de columnas hace que el programa de utilidad de carga de datos ignore columnas concretas durante la operación de carga. Si no utiliza una lista de exclusión de columnas, el programa de utilidad actualiza todas las columnas de la fila de una fila de tabla de base de datos cuando el programa de utiliza actualiza la fila. Si el valor se establece en el archivo de entrada, el programa de utilidad puede sustituir el valor de columna existente por un valor predeterminado o establecer el valor en nulo. Para obtener más información, consulte Configuración de una lista de exclusión de columnas.

El ejemplo siguiente muestra cómo configurar el mediador de objetos de negocio (BusinessObjectMediator) en el archivo de configuración de carga de datos de oferta para marcar una oferta para supresión o para eliminarla de la base de datos.

<_config:BusinessObjectMediator className="com.ibm.commerce.price.
    dataload.mediator.OfferMediator">
  <_config:property name="markOfferForDelete" value="true" />
  </_config:BusinessObjectMediator>
markOfferForDelete
true
La oferta se marca para supresión. Para eliminar los registros, utilice el programa de utilidad de limpieza de base de datos.
false
La oferta se suprime de la base de datos. Todos los registros relacionados se suprimen en cascada.