Configuration du lecteur de données CSV
Configurez le lecteur de données CSV dans le fichier de configuration d'objet métier pour modifier la façon dont les données sont lues depuis les fichiers CSV source. Vous pouvez vouloir changer les paramètres par défaut du lecteur de données CSV pour mieux les adapter au format de vos données source existantes.
Pourquoi et quand exécuter cette tâche
Le lecteur de données CSV lit et traite les données d'un fichier d'entrée CSV un enregistrement à la fois jusqu'à la fin du fichier. Chaque enregistrement du fichier CSV doit avoir la même structure de données. Les données lues depuis le fichier CSV peuvent être mappées à un objet métier HCL Commerce à l'aide d'un fichier de configuration d'objet métier. Avec ce fichier de configuration, chaque colonne de données du fichier d'entrée CSV est mappée directement à une propriété d'un objet métier HCL Commerce.
- Les jetons sont séparés par le caractère tokenDelimiter. Par défaut, un caractère tokenDelimiter est une virgule (
,). Chaque jeton peut être éventuellement entouré de caractères tokenValueDelimiter, avec un tokenValueDelimiter au début et à la fin du jeton. Le caractère tokenValueDelimiter par défaut est le signe guillemets ("). Si une valeur de jeton contient un caractère spécial, tel que le caractère tokenDelimiter ou lineDelimiter, le jeton doit être entouré par des caractères tokenValueDelimiter. Par exemple, la chaîne suivante inclut des virgules et est entourée du caractère tokenValueDelimeter :"Men's fashions for business, casual, and formal occasions" - Les enregistrements sont séparés par un caractère lineDelimiter, qui peut également être un délimiteur d'enregistrement. Par défaut, le caractère lineDelimiter est la nouvelle ligne. Ce caractère indique la fin d'un enregistrement pour un objet et le début d'un nouvel enregistrement d'objet.
La valeur par défaut étant un caractère de nouvelle ligne, le lecteur de données CSV lit chaque ligne dans le fichier comme un enregistrement objet distinct. Si vous incluez des données d'une colonne ou d'un enregistrement sur plusieurs lignes dans le fichier, vous pouvez rencontrer des erreurs ou des problèmes avec le processus de chargement ou avec vos données. Si vous souhaitez que les données d'une colonne s'étendent sur plusieurs lignes, placez les données dans les caractères tokenValueDelimiter configurés. Si vous souhaitez que les données d'un enregistrement complet s'étendent sur plusieurs lignes, vous devez configurer un autre caractère lineDelimiter à utiliser à la place du caractère de nouvelle ligne pour identifier la fin de chaque enregistrement.
Procédure
-
Ouvrez le fichier de configuration wc-loader-<object>.xml en mode édition.
Un exemple de ce fichier se trouve dans le répertoire suivant :
WCDE_installdir\samples\DataLoad\Catalog
utilities_root/samples/DataLoad/Catalog
-
Recherchez l'élément
<_config:DataReader>. -
Ajoutez les paramètres facultatifs suivants à l'intérieur de la balise
<_config:DataReader>:- lineDelimiter
- Spécifie le caractère de séparation de ligne ou d'enregistrement. La valeur par défaut est le caractère de nouvelle ligne. Le caractère lineDelimiter ne peut pas figurer dans le contenu d'un jeton sauf s'il est encadré par le caractère tokenValueDelimiter.Remarque : Si vous souhaitez que les enregistrements dans un fichier CSV s'étendent sur plusieurs lignes, vous pouvez définir un caractère lineDelimiter personnalisé pour identifier la fin d'un enregistrement. Si vous configurez un autre caractère délimiteur, les fichiers CSV peuvent contenir des caractères de retour à la ligne dans les enregistrements d'objet, plutôt que de laisser le lecteur de données gérer chaque caractère de retour à la ligne à la fin d'un enregistrement. Par exemple, vous pouvez configurer lineDelimiter sur le point-virgule (
;) plutôt que sur le caractère de retour à la ligne. Avec ce nouveau caractère lineDelimiter configuré, le fichier CSV suivant est considéré comme contenant un enregistrement d'objet unique plutôt que deux enregistrements.
Le lecteur de données CSV lit cet enregistrement d'objet sous la forme d'un enregistrement unique avec la valeur deColumn1, Column2, Column3, Column4, Column5; Value1,Val ue2,Value3,Value4,Value5;Column2qui couvre plusieurs lignes. - tokenDelimiter
- Spécifie le caractère de séparation de jeton. La valeur par défaut est la virgule (,).
- tokenValueDelimiter
- Spécifie le caractère de séparation de chaîne. Le paramètre tokenValueDelimiter permet d'indiquer le début et la fin d'un jeton. Le caractère tokenValueDelimiter par défaut est le signe guillemets ("). Par exemple, le jeton suivant qui comporte des virgules peut être utilisé pour la description abrégée d'une entrée de catalogue :
"Men's fashions for business, casual, and formal occasions"Notes :- Si vous éditez votre fichier dans un éditeur de texte en clair, utilisez le paramètre tokenValueDelimiter lorsque votre jeton contient des caractères spéciaux, comme le caractère tokenDelimiter ou le paramètre tokenValueDelimiter lui-même. Si vous utilisez ce caractère dans le jeton, vous devez utiliser deux caractères tokenValueDelimiter. Par exemple, le jeton suivant qui comporte des virgules et des guillemets peut être utilisé pour la description abrégée d'une entrée de catalogue :
La sortie peut ressembler à la chaîne suivante :"Men's fashions for ""business"", ""casual"", and ""formal"" occasions."
Ces utilisations deMen's fashions for "business", "casual", and "formal" occasions.tokenValueDelimeters'appliquent seulement si vous utilisez un éditeur de texte en clair pour éditer votre fichier. - Si vous souhaitez inclure les valeurs de colonne qui s'étendent sur plusieurs lignes dans le fichier d'entrée, placez la valeur de colonne entre les caractères tokenValueDelimiter. En entourant la valeur de ces caractères, vous pouvez inclure le caractère de retour à la ligne dans la valeur de colonne sans que le lecteur de données n'ait à prendre en charge le caractère de retour à la ligne comme fin de l'enregistrement d'objet.
- Si vous éditez votre fichier dans un éditeur de texte en clair, utilisez le paramètre tokenValueDelimiter lorsque votre jeton contient des caractères spéciaux, comme le caractère tokenDelimiter ou le paramètre tokenValueDelimiter lui-même. Si vous utilisez ce caractère dans le jeton, vous devez utiliser deux caractères tokenValueDelimiter. Par exemple, le jeton suivant qui comporte des virgules et des guillemets peut être utilisé pour la description abrégée d'une entrée de catalogue :
- charset
- Spécifie le jeu de caractères du fichier CSV. Par défaut, il s'agit du jeu de caractères UTF-8.
- firstLineIsHeader
- Indique que la première ligne du fichier CSV comporte des informations d'en-tête de colonne. Utilisez cette ligne d'en-tête pour fournir les mappages de colonnes dans l'élément
<_config: Data>du fichier de configuration wc-loader-<object>.xml. La valeur par défaut est false. - useHeaderAsColumnName
- Indique que la première ligne du fichier CSV est utilisée comme information de colonne. La valeur par défaut pour useHeaderAsColumnName est 'false'. Quatre combinaisons des paramètres firstLineIsHeader et useHeaderAsColumnName sont possibles :
- firstLineIsHeader = "false" et useHeaderAsColumnName = "false". Dans ce cas, les mappages de colonnes dans le fichier de configuration wc-loader-<object>.xml sont obligatoires.
- firstLineIsHeader = "false" et useHeaderAsColumnName = "true". Dans ce cas, l'indicateur useHeaderAsColumnName est ignoré et le mappage de colonnes est obligatoire.
- firstLineIsHeader = "true" et useHeaderAsColumnName = "false". Dans ce cas, la configuration de mappage de colonnes est facultative. Si celle-ci est définie dans le fichier de configuration wc-loader-<object>.xml, utilisez la configuration de mappage de colonnes. Sinon, utilisez l'en-tête CSV pour les noms de colonnes.
- firstLineIsHeader = "true" et useHeaderAsColumnName = "true". Dans ce cas, la configuration de mappage de colonnes est ignorée et l'en-tête CSV sera toujours utilisé pour les noms de colonnes.
Remarque : L'élémentDataReaderpeut contenir des éléments imbriqués. Pour ajouter des mappages de colonnes, vous pouvez utiliser le code suivant à titre d'exemple :<_config:DataReader firstLineIsHeader="false" useHeaderAsColumnName="false"> <_config:Data> <_config:column number="1" name="FIRST" /> <_config:column number="2" name="SECOND" /> </_config:Data> </_config:DataReader>
- Enregistrez et fermez le fichier.
Exemple
<_config:DataReader lineDelimiter="\n" tokenDelimiter="," tokenValueDelimiter='"'
charset="UTF-8" firstLineIsHeader="false" useHeaderAsColumnName="false" />