Configuración del orden de carga de datos

El archivo de configuración de orden de carga de datos controla el orden de carga del programa de utilidad de carga de datos. El archivo de carga de datos tiene un puntero al archivo de valores de entorno, al archivo de configuración de objeto de negocio y al archivo de entrada. También puede definir la modalidad que el programa de utilidad de carga de datos utiliza para cargar los datos.

Por qué y cuándo se efectúa esta tarea

Los archivos de configuración de orden de carga de ejemplo se proporcionan para cargar diferentes objetos de componentes. Estos archivos se incluyen en los directorios específicos del componente en el directorio siguiente:
  • Linuxutilities_root/samples/DataLoad
  • HCL Commerce DeveloperWCDE_installdir/samples/DataLoad

Procedimiento

  1. Cree una copia del archivo wc-dataload-object.xml de ejemplo y cambie el nombre del archivo.
    Por ejemplo, copie el archivo wc-dataload-catalog-entry.xml en el directorio de componente Catalog.
  2. Abra el archivo de configuración de orden de carga de datos para su edición.
  3. Especifique el archivo de configuración de entorno de carga de datos.
    1. Localice el elemento <_config:DataLoadEnvironment>.
    2. Cambie el valor para el atributo configFile de este elemento para que sea la vía de acceso relativa al archivo de configuración del entorno de carga de datos.
      Nota: Este valor se sustituye si se especifica un archivo de configuración en la línea de mandatos cuando se ejecuta el Programa de utilidad de carga de datos Utility server Docker container.

      Aunque el archivo de configuración de entorno que se especifica en la línea de mandatos tiene prioridad, el elemento debe existir de todas maneras en el archivo de configuración de entorno de carga de datos.

  4. Configure el orden de carga para el proceso de carga de datos.
    1. Localice el elemento <_config:LoadOrder>.
    2. Opcional: Especifique un valor para el atributo commitCount. El recuento de compromisos identifica el número de filas que se han desechado en una sola transacción antes de que se emita un compromiso.
      Los siguientes valores pueden establecerse para este atributo.
      0
      No se compromete nada hasta que el elemento de carga termina de procesar todos los datos de entrada. Si se produce una excepción, los registros que se procesan satisfactoriamente pueden confirmarse. Si la excepción es una excepción SQL, el programa de utilidad retrotrae todos los datos que se procesan después del último registro confirmado. Si se produce un tipo de excepción distinto, el programa de utilidad retrotrae únicamente los datos que no se procesan satisfactoriamente. La operación de carga confirma todos los registros procesados satisfactoriamente.
      N
      Donde N es un valor entero positivo. El recuento de compromisos especifica cuántas líneas de registros se han procesado cuando llama al compromiso de base de datos. El valor predeterminado es 1.
      Nota: Si se producen errores durante la carga de datos, una excepción SQL hace que la base de datos se retrotraiga a la última línea comprometida. Los datos indicados desde la última línea comprometida hasta la línea de error no se comprometen en la base de datos. Cualquier otro error no producirá una retrotracción. Para otros errores, solo los datos de la línea de error no se comprometen en la base de datos. Todos los demás datos se han comprometido. Por ejemplo, si commitCount es N = 10 y se produce un error en la línea 25:
      • Si el error es una excepción SQL, los datos entre la línea 1 - 20 se comprometen en la base de datos. Los datos entre la línea 21 - 25 no se añaden en la base de datos.
      • Si el error no es una excepción SQL, los datos entre la línea 1 - 24 se comprometen en la base de datos. Los datos en la línea 25 no se añaden en la base de datos.

      Puede incluir una propiedad de configuración "rollbackForAnyException" para controlar qué datos retrotrae el programa de utilidad cuando se produce una excepción. Cuando la propiedad se establece en true, el programa de utilidad retrotrae todos los datos que se procesan después del último registro comprometido cuando se produce la excepción. Esta retrotracción se produce independientemente del tipo de excepción. Puede establecer esta propiedad dentro de la configuración para cada elemento de carga o dentro del elemento <_config:LoadOrder> principal para que el valor de la propiedad se aplique a todos los elementos de carga.

    3. Opcional: Especifique el valor para el atributo batchSize. Las transacciones de base de datos se cargan en lotes. Estos lotes se mantienen en la memoria Java hasta que se han almacenado lo suficiente para un vaciado. A continuación, el contenido del lote se almacena en la base de datos como un solo paquete de datos. Los lotes se almacenan en la base de datos hasta que se produce el siguiente compromiso y la base de datos carga los cambios.
      Los siguientes valores pueden establecerse para este atributo.
      0
      Utiliza la actualización por lotes JDBC. Todos los lotes, para el elemento de carga entero, se procesan para datos de entrada.
      N
      Donde N es un valor entero positivo, que indica cuántas líneas de datos se procesan antes de que se ejecute el lote JDBC. El lote JDBC está habilitado solo si el tamaño de lote es mayor que 1. El valor batchSize debe inferior o igual al valor commitCount. El tamaño de lote predeterminado es 1, lo que significa que el lote JDBC no está habilitado y las sentencias SQL se ejecutan una a una directamente.
    4. Opcional: Especifique el valor para el atributo dataLoadMode. La modalidad de datos de carga puede establecerse en Insert, Update o Delete.
      Inserción
      Todos los datos se insertan en la base de datos. El programa de utilidad genera sentencias SQL de inserción. Esta modalidad se recomienda para la carga inicial de datos. Si hay distintivos de supresión en el archivo de datos, los distintivos se ignoran.
      En modalidad de inserción, puede especificar un rango de claves primarias a utilizar cuando el objeto no existe en la base de datos y requiere una nueva clave generada. Especifique el valor dentro del elemento <_config:BusinessObjectMediator>. Por ejemplo:
      startKey="100001" endKey="200001"
      Los grabadores de datos que están soportados en la modalidad de inserción:
      • Grabador de datos JDBC
      • Grabador de datos de carga nativa
      Nota: Ejecutar el programa de utilidad de carga de datos en modalidad de inserción puede mejorar el rendimiento de carga de las cargas iniciales de grandes cantidades de datos. Sin embargo, cuando se ejecuta el programa de utilidad de carga de datos en modalidad de inserción, el programa de utilidad no comprueba la base de datos antes de que el programa de utilidad cargue los datos de entrada. El programa de utilidad no determina si los objetos de datos que está creando existen en la base de datos antes de que el programa de utilidad intente cargar y crear los objetos de datos. Este comportamiento puede provocar que el proceso de carga falle cuando el programa de utilidad intente crear objetos de datos que existen en la base de datos.
      Por ejemplo, si el archivo de entrada es un archivo CSV que contiene una línea que crea un producto y una descripción del producto. Si el archivo también contiene una segunda línea que carga el mismo producto con una descripción en un idioma diferente, el proceso de carga falla. Puesto que el programa de utilidad crea el producto y la descripción en la primera línea, cuando el programa de utilidad encuentra la segunda línea, el programa de utilidad intenta crear de nuevo el producto. Puesto que el producto existe, la carga no se realiza. Para cargar los datos del producto y la descripción, puede utilizar uno de los métodos siguientes:
      • Ejecute el programa de utilidad de carga de datos en modalidad de sustitución.
      • Ejecute el programa de utilidad de carga de datos en modalidad de inserción, pero cargue por separado la información sobre el producto y la descripción. Utilice un archivo de entrada para cargar la información sobre el producto y un archivo de entrada distinto para cargar todas las descripciones.

      Para obtener más información sobre cómo configurar el programa de utilidad de carga de datos para que se ejecute en modalidad de inserción, consulte Escenario: Carga inicial.

      Sustituir
      Valor predeterminado: Todos los datos se sustituyen en la base de datos. El programa de utilidad genera sentencias SQL de inserción, actualización o supresión, en función de los datos. La modalidad de sustitución sustituye los datos existentes contenidos en la base de datos por los datos de entrada. Es decir, si la información de alguna columna no está en los datos de entrada, el valor de la columna se actualiza a nulo o al valor predeterminado, si lo hay. Por ejemplo:
      • Si un registro (línea) del archivo de datos representa un objeto nuevo, se inserta.
      • Si el objeto ya está en la base de datos, se sustituye.
      • Si hay un distintivo en los datos para indicar que este objeto se va a eliminar, el objeto se suprime.

      En modalidad de sustitución, no especifique un valor de rango de claves primario ya que puede dar lugar a conflictos de claves dentro de la base de datos.

      Los grabadores de datos que están soportados en la modalidad de sustitución:
      • Grabador de datos JDBC
      • Grabador de datos de carga nativa
      Nota: Puede impedir que se sustituya de forma accidental información en la base de datos con datos nulos. Modifique los datos de entrada originales que se utilizan en la carga inicial cuando sustituye un subconjunto de los datos originales. No entre campos vacíos en el archivo de origen, a menos que desee que los campos contengan datos nulos en la base de datos.

      Para obtener más información sobre cómo configurar el programa de utilidad de carga de datos para que se ejecute en modalidad de sustitución, consulte Escenario: Carga delta.

      Actualizar
      Los datos de entrada de catálogo y descripción de entrada de catálogo especificados se actualizan en la base de datos. EL programa de utilidad compara los datos de entrada de catálogo en el archivo de entrada con los datos correspondientes para las entradas de catálogo en la base de datos. El programa de utilidad sustituirá o añadirá los datos nuevos o modificados para únicamente las columnas que se especifican en el archivo de entrada. Las demás columnas permanecen igual.

      La modalidad de actualización solo da soporte al grabador de datos JDBC.

      Nota: El programa de utilidad de carga de datos puede ejecutarse en modalidad de actualización para cargar únicamente información de entrada de catálogo o de descripción de entrada de catálogo.

      Para obtener más información sobre cómo configurar el programa de utilidad de carga de datos para que se ejecute en modalidad de actualización, consulte Escenario: Carga de actualización de entradas de catálogo.

      eliminar
      Todos los datos identificados en el archivo de entrada que están en la base de datos se suprimen de la base de datos. El programa de utilidad ignora el valor en la columna de supresión o elemento en un archivo de entrada en esta modalidad. El programa de utilidad genera las sentencias SQL de supresión que son necesarias para eliminar los objetos en el archivo de entrada. Al ejecutar el programa de utilidad en esta modalidad, únicamente se da soporte al grabador de datos JDBC en esta modalidad.
      Nota: Si el sitio utiliza la búsqueda de HCL Commerce, el índice de búsqueda delta puede no volver a crearse correctamente cuando se suprimen algunos objetos de catálogo con el programa de utilidad de carga de datos en modalidad de supresión. Cuando se suprime un objeto hijo de una entrada de catálogo o categoría con el programa de utilidad en modalidad de supresión, tanto los objetos hijo como padre se eliminan de la reconstrucción de índice de búsqueda delta. Esta eliminación puede provocar que la categoría o la entrada de catálogo padre ya no se indexen ni visualicen correctamente en el escaparate.

      Utilice el programa de utilidad en modalidad de sustitución para eliminar objetos de catálogo cuando el sitio utiliza la búsqueda de HCL Commerce . Para eliminar objetos con el programa de utilidad en modalidad de sustitución, incluya el valor 1 para la columna Delete de un objeto en el archivo de entrada. Si decide eliminar objetos de catálogo con el programa de utilidad en modalidad de supresión, ejecute una reconstrucción de índice completa una vez que se haya completado la operación de carga.

    5. Opcional: Especifique el valor para el atributo maxError. La máxima tolerancia de errores puede establecerse para asegurarse de que se ejecute el programa de utilidad de carga de datos, independientemente de los errores que puedan producirse.
      Nota: Si está utilizando la clase de lector de datos XML para cargar archivos de entrada XML, no establezca el atributo maxError. Si establece este atributo, debe establecer el valor del atributo en 1. Si establece un valor diferente, puede encontrar un comportamiento inesperado.
      Si utiliza una clase de lector de datos CSV, los siguientes valores pueden establecerse para este atributo.
      0
      Seguir ejecutando el programa de utilidad de carga de datos, independientemente de cuántos errores se produzcan.
      N
      Donde N es un valor entero positivo. El número máximo de errores especifica el nivel de tolerancia de errores durante el proceso de carga de datos para un elemento de carga. El valor predeterminado es 1.
    6. Especifique los elementos de configuración de elementos de carga para cada elemento de carga que es necesario. Especifique la información de elementos de carga dentro del elemento <_config:LoadItem>. Dentro de este elemento, debe incluir el atributo name para identificar el nombre del atributo de nombre. También debe incluir el atributo businessObjectConfigurationFile para identificar el archivo de configuración del objeto de negocio para el elemento de carga.
      Por ejemplo,
      <_config:LoadItem name="CatalogGroup" businessObjectConfigFile=
      "wc-loader-catalog-group.xml" >
    7. Dentro del elemento <_config:LoadItem>, especifique la ubicación del origen de datos para el archivo de entrada que contiene la información del elemento de carga. Especifique esta información con el atributo location en el elemento <_config:DataSourceLocation>.
      Por ejemplo, para un archivo específico:
      <_config:DataSourceLocation location="CatalogGroups\CatalogGroups.xml"/>
      Por ejemplo, para un directorio:
      <_config:DataSourceLocation location="CatalogGroups"/>
      Si especifica un directorio para un elemento de carga:
      • Todos los archivos del directorio deben ser del mismo tipo de carga para que el programa de utilidad de carga de datos no haya fallado.
      • Todos los archivos del directorio se cargan en serie, ordenados por nombre de archivo en orden ascendente.
    8. Opcional: Incluya todas las propiedades de configuración que sean necesarias.
      Incluyan estas propiedades dentro de un elemento <_config:property> dentro de los elementos <_config:LoadOrder> o <_config:Loaditem>. Si esta etiqueta de propiedad se especifica dentro de un elemento <_config:LoadOrder>, la propiedad se aplica a todos los elementos de carga. Si la etiqueta de propiedad se especifica dentro de un elemento <_config:Loaditem>, la propiedad se aplica únicamente al elemento de carga especificado.
      Por ejemplo, si desea crear el índice de búsqueda, incluya la propiedad de configuración buildSearchIndex en el archivo de configuración de orden de carga.

      Para obtener más información sobre las propiedades de configuración disponibles, consulte Propiedades de configuración del programa de utilidad de carga de datos.

    9. Guarde y cierre el archivo.
      El ejemplo siguiente muestra un archivo de configuración para datos de catálogo.
      <?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>
  5. Opcional: Si está configurando el orden de carga de datos para los procesos de carga de datos de rutina, puede configurar un preprocesador de diferencia de archivos para que se ejecute.

    Puede ejecutar un preproceso de diferencias de archivo para cargas de datos de rutina para mejorar el rendimiento del programa de utilidad de carga de datos para cargar estos archivos. Mediante el uso de este preprocesador puede comparar dos archivos de entrada, por ejemplo un archivo cargado anteriormente y una nueva versión de este archivo. El preprocesador genera un archivo de diferencias que sólo contiene los registros del nuevo archivo que no están en el archivo anterior o que han cambiado respecto a los registros del archivo anterior. Entonces el programa de utilidad de carga de datos puede cargar este archivo de diferencias. Si los archivos cargados de forma rutinaria contienen muchos registros anteriores cargados, la ejecución de este archivo de diferencias puede producir tiempos de carga más cortos. La ejecución de una diferencia de archivos puede reducir el tiempo de carga que se necesita para cargar las actualizaciones de rutina en la base de datos de HCL Commerce, reducir el tiempo de utilización del servidor y mejorar el rendimiento del servidor.

    Puede configurar el preprocesador de diferencias de archivos del programa de utilidad de carga de datos para comparar archivos por los valores en cada columna, en lugar de todos los registros, con objeto de identificar los registros cambiados. También puede configurar el preprocesador de diferencias de archivos para omitir columnas específicas cuando el proceso está comparando archivos.

    Para obtener más información sobre este preprocesador, consulte Preproceso de diferencias de archivos de carga de datos.

  6. Guarde y cierre el archivo.