Configuración del programa de utilidad de carga de datos para ejecutar un preproceso de diferencias de archivos
Si de forma rutinaria carga el mismo archivo de entrada de carga de datos de un origen o sistema externo, puede optar por ejecutar un preproceso de diferencias de archivos como parte del proceso de carga de datos para asegurarse de que esté cargando únicamente los nuevos cambios cuando cargue el archivo de entrada más reciente.
Antes de empezar
- Identifique los dos archivos de entrada de carga de datos que desea comparar y a partir de los cuales generar un archivo de diferencias.
- Cargue satisfactoriamente el archivo de entrada antiguo en la base de datos de HCL Commerce. Si algunos registros están en el archivo antiguo y en el archivo nuevo con el que se compara el archivo antiguo, estos registros no están en el archivo de diferencias generado o en la base de datos. Para impedir que los registros se omitan sin haberse cargado en la base de datos, verifique que el contenido del archivo antiguo se carga en la base de datos.
Por qué y cuándo se efectúa esta tarea
Se dispone de una herramienta de diferencias de archivos que funciona como un preprocesador de lector de datos cuando se ejecuta el programa de utilidad de carga de datos. Este preprocesador de diferencias de archivos puede utilizarse para leer y comparar dos archivos CSV o dos archivos XML. El preprocesador utiliza una clase de lector de datos distinto para leer archivos CSV (CSVFileDiffPreprocessor) y archivos XML (XmlFileDiffPreprocessor) de modo que no puede comparar un archivo CSV con un archivo XML.
Propiedades de configuración para un preprocesador de diferencias de archivos
keyColumns
que debe especificarse en el archivo de configuración de objeto de negocio.Propiedad de configuración | Descripción: |
---|---|
keyColumns |
Necesario. Las columnas de clave son las columnas CSV o los elementos XML que identifican de forma exclusiva un registro en el archivo de entrada. |
numberOfSplitFiles |
Opcional. Utilice esta propiedad para especificar la cantidad de archivos en los que se dividirán los archivos de entrada cuando el archivo de entrada antiguo es demasiado grande para ser almacenado en la memoria. Se recomienda especificar |
checkDuplicatedKeys |
Opcional. Especifique esta propiedad como true realizar una comprobación adicional para ver si hay entradas duplicadas. Se recomienda especificar |
diffFileDirectory |
Opcional. Esta propiedad es para cambiar el directorio donde se guarda el archivo de diferencias generado. |
dataReaderPreprocessOnly |
Opcional. Si se especifica esta propiedad como true se detendrá el proceso de carga de datos una vez que se haya generado y guardado el archivo de diferencias. |
cleanupSplitFiles |
Opcional. Si los archivos de entrada están divididos, puede establecer esta propiedad en false para guardar los archivos más pequeños temporales generados. Si esta propiedad se establece en true o se omite, se suprimen los archivos más pequeños generados una vez que se han fusionado los archivos. |
columnBasedCompare |
Opcional. Indica si el preprocesador va a utilizar una comparación basada en columnas para comparar archivos. Puede establecer los siguientes valores para esta propiedad:
Nota: La configuración de una comparación basada en columnas puede tardar más en completarse que utilizar el comportamiento de preprocesador de diferencia de archivos predeterminado. Con una comparación basada en columnas, el preprocesador debe completar una consulta adicional entre los archivos. |
includeCompareColumns |
Opcional. Indica si el preprocesador de diferencia de archivos es comparar únicamente columnas específicas. Utilice una lista separada por comas como valor para esta propiedad para que identifique las columnas que se van a comparar. Cualquier columna que no esté en esta lista se ignora durante la comparación de archivos. Cuando se incluya esta propiedad, la propiedad columnBasedCompare se configura de forma predeterminada con el valor true cuando la propiedad no se configura de forma explícita.Si se incluyen las propiedades Si se incluye la propiedad Nota: Si se incluye la propiedad includeCompareColumns y no se establece un valor y la propiedad excludeCompareColumns no se ha establecido con un valor, el preprocesador de diferencias de archivos compara solamente las columnas de clave. Entonces, el archivo de diferencias generado incluirá solamente los registros del archivo de entrada nuevo que tengan un valor de columna de clave que no esté en el archivo de entrada antiguo. |
excludeCompareColumns |
Opcional. Indica si el preprocesador de diferencia de archivos va a excluir de la comparación columnas específicas. Utilice una lista separada por comas como valor para esta propiedad de modo que identifique las columnas que se deban excluir de la comparación. Las demás columnas se comparan. Cuando se incluya esta propiedad, la propiedad columnBasedCompare se configura de forma predeterminada con el valor true cuando la propiedad no se configura de forma explícita.Si se incluyen las propiedades Si se incluye la propiedad |
Configuración de la diferencia de archivos para manejar archivos de entrada grandes
El preproceso de diferencias de archivos carga el archivo de entrada antiguo en una correlación hash en la memoria del sistema y la compara con el archivo de entrada nuevo para generar un archivo de diferencias. Si el antiguo antiguo es demasiado grande para cargarlo en la memoria del sistema, el preprocesador de diferencias de archivos divide el archivo en archivos más pequeños. El nuevo archivo de entrada también se divide en el mismo número de archivos más pequeños. El preproceso genera un archivo de diferencias para cada aparejamiento de estos archivos más pequeños y, a continuación, fusiona estos archivos en un único archivo de diferencias más grande.
De forma predeterminada, el preprocesador de diferencias de archivos determina automáticamente el número de archivos que son necesarios para dividir un archivo grande. Puede elegir configurar el número de archivos en los que se dividen los archivos de entrada grandes. Si no se configura esta propiedad, asegúrese de especificar un número de archivos lo bastante grande como para que todos los registros del archivo de entrada puedan almacenarse en la memoria.
Dividir los archivos de entrada en archivos más pequeños requiere tiempo de proceso y el espacio de disco. Si el sistema tiene suficiente memoria física y utiliza una JVM de 64 bits, aumente el tamaño de almacenamiento dinámico de la JVM para manejar archivos de entrada grandes. Si el sistema tiene suficiente memoria asignada y el preproceso no divide los archivos de entrada, el archivo de diferencias se puede generar más rápido. Para obtener más información sobre el ajuste del rendimiento de la JVM, incluido el tamaño de almacenamiento dinámico de la JVM, consulte Ajuste del rendimiento de la JVM.
Procedimiento
-
Actualice el archivo de configuración de objeto de negocio de carga de datos para que el objeto de negocio incluya el preprocesador de diferencias de archivos al ejecutar el programa de utilidad de carga de datos.
-
Actualice el archivo de configuración de orden de carga de carga de datos para que el orden de carga identifique la ubicación de los archivos que se van a comparar. Para ejecutar el preproceso de diferencias de archivos, debe identificar dos archivos.
Por ejemplo, la versión cargada anteriormente y la versión más reciente de un archivo.
Al especificar
oldLocation
para un archivo, está indicando que el preproceso de diferencias de archivos se va a ejecutar. Los tipos de archivo de los archivos que se identifican para la comparación determinan el lector de datos (CSV o XML) que se utiliza en el preproceso. - Ejecute el Carga de datos, programa de utilidad. Se ejecuta el preproceso de diferencias de archivos, y genera y guarda el archivo de diferencias. En función de las configuraciones, el programa de utilidad de carga de datos puede cargar el archivo de diferencias o detener el proceso de carga de datos para poder revisar el archivo de diferencias y cargar el archivo más adelante.
Ejemplo
<_config:DataLoadConfiguration xsi:schemaLocation="http://www.ibm.com/xmlns/prod/commerce/foundation/config ../xsd/wc-dataload.xsd">
<_config:DataLoadEnvironment configFile="wc-dataload-env.xml"/>
<_config:LoadOrder commitCount="100" batchSize="1" dataLoadMode="Replace" >
<_config:LoadItem name="CatalogEntry" businessObjectConfigFile="wc-loader-catalog-entry.xml" >
<_config:property name="dataReaderPreprocessOnly" value="true"/>
<_config:DataSourceLocation location="c:/temp/dataload/samples/CatalogEntryNew.csv" oldLocation="c:/temp/dataload/samples/CatalogEntryOld.csv" />
</_config:LoadItem>
</_config:LoadOrder>
</_config:DataLoadConfiguration>
En este archivo de configuración de ejemplo, los dos archivos se encuentran en un directorio de ejemplo temporal. Una vez que el preprocesador se completa, el archivo de diferencias generado, CatalogEntryNew_diff_2013.03.28_12.01.01.001.csv, se guarda en el mismo directorio temporal. Este ejemplo incluye la propiedad de configuración dataReaderPreprocessOnly
que hace que el programa de utilidad de carga de datos solo ejecute el preprocesador de diferencias de archivos. Para ejecutar el preprocesador, el archivo de configuración especifica que el programa de utilidad de carga de datos se va a ejecutar en modalidad de sustitución.