Loading

Préparation d'un fichier CSV pour l'importation ou la mise à jour dans Salesforce

Date de publication: Nov 10, 2021
Description


Lisez les considérations ci-dessous afin de déterminer quand vous préparez votre fichier de données CSV pour l'importation ou la mise à jour dans Salesforce.

Résolution


Préparation de fichiers CSV

La première ligne d'un fichier CSV répertorie les noms de champ de l'objet que vous traitez. Chaque ligne suivante correspond à un enregistrement dans Salesforce. Un enregistrement est formé d'une série de champs délimités par une virgule. Un fichier CSV peut inclure plusieurs enregistrements et constitue un « lot ».

Tous les enregistrements d'un fichier CSV doivent avoir le même format. Vous spécifiez cet objet dans la tâche associée au lot. Tous les lots associés à la tâche doivent contenir les enregistrements du même objet.

Tenez compte des points suivants lors du traitement de fichiers CSV dans l'API de transfert en masse :

  • L'API de transfert en masse ne prend en charge aucun délimiteur autre que la virgule.
  • L'API de transfert en masse est optimisée pour le traitement des ensembles de données volumineux et applique un format strict pour les fichiers CSV (pour connaître les formats, consultez Lignes d'enregistrements CSV valides). Pour traiter les fichiers CSV, le plus simple est d'activer l'API de transfert en masse pour Data Loader.
  • Vous devez inclure tous les champs requis lors de la création d'un enregistrement. Vous pouvez également inclure n'importe quel autre champ pour l'objet.
  • Si vous mettez à jour un enregistrement, tous les champs qui ne sont pas définis dans le fichier CSV sont ignorés lors de la mise à jour.
  • Les fichiers doivent respecter le format UTF-8.
 

Champs de relation dans une ligne d'en-tête

Dans Salesforce, de nombreux objets sont associés à d'autres objets. Par exemple, Compte est un parent de Contact. Vous pouvez ajouter une référence à un objet associé dans un fichier CSV en représentant la relation dans un en-tête de colonne.

Lorsque vous traitez des enregistrements dans l'API de transfert en masse, vous utilisez la syntaxe RelationshipName.IndexedFieldName dans un en-tête de colonne CSV pour décrire la relation entre un objet et son parent, où RelationshipName est le nom de la relation du champ et IndexedFieldName est le nom du champ indexé qui identifie de façon unique l'enregistrement parent. Utilisez l'appel describeSObjects() dans l'API SOAP basée sur SOAP pour obtenir la valeur de propriété relationshipName d'un champ.

Certains objets ont également des relations avec eux-mêmes. Par exemple, le champ Rattachement hiérarchique d'un contact est une référence à un autre contact. Si vous insérez un contact, vous pouvez utiliser un en-tête de colonne ReportsTo.Email pour indiquer que vous utilisez le champ E-mail d'un contact afin d'identifier de façon unique le champ Rattachement hiérarchique d'un contact. La partie ReportsTo de l'en-tête de colonne correspond à la valeur de propriété relationshipName du champ Rattachement hiérarchique. Le fichier CSV suivant utilise une relation :
 

1FirstName,LastName,ReportsTo.Email
2Tom,Jones,buyer@salesforcesample.com


Remarque :

  • Vous pouvez utiliser une relation enfant-à-parent, mais pas utiliser une relation parent-à-enfant.
  • Vous pouvez utiliser une relation enfant-à-parent, mais vous ne pouvez pas l'agrandir pour utiliser une relation enfant-à-parent-grandparent.
  • Vous pouvez utiliser uniquement des champs indexés dans l'objet parent. Un champ personnalisé est indexé si son champ ID externe est sélectionné. Un champ standard est indexé si sa propriété idLookup est définie sur true. Consultez la colonne Propriétés de champ dans le tableau des champs pour chaque objet standard.
 

Champs de relation d'objets personnalisés

Les objets personnalisés utilisent des champs personnalisés pour suivre les relations entre les objets. Utilisez le nom de la relation, qui se termine par __r(trait de soulignement-trait de soulignement-r), pour représenter une relation entre deux objets personnalisés. Vous pouvez ajouter une référence à un objet associé en représentant la relation dans un en-tête de colonne.

Si l'objet enfant a un champ personnalisé dans un Nom d'API Mother_Of_Child__c qui pointe vers un objet personnalisé parent et que l'objet parent a un champ avec un Nom d'API External_ID__c, utilisez l'en-tête de colonne Mother_Of_Child__r.External_ID__c pour indiquer que vous utilisez le champ ID externe de l'objet parent pour identifier de façon unique le champ Mother Of Child. Pour utiliser un nom de relation dans un en-tête de colonne, remplacez __c par __r dans le champ personnalisé de l'objet enfant.

Pour plus d'informations, lisez Understanding Relationship Names in the Salesforce SOQL and SOSL Reference Guide (en anglais).

Le fichier CSV suivant utilise une relation :
 

1Name,Mother_Of_Child__r.External_ID__c
2CustomObject1,123456
 

Relations de champs polymorphiques

Un champ polymorphique peut référencer plusieurs types d'objet en tant que parent. Par exemple, un contact ou une piste peut être le parent d'une tâche. En d'autres termes, le champ WhoId d'une tâche peut contenir l'ID d'un contact ou d'une piste. 

Un champ polymorphique est plus flexible. Par conséquent, l'en-tête de colonne a un élément supplémentaire qui permet de définir le type de l'objet parent. La syntaxe est ObjectType:RelationshipName.IndexedFieldName.

L'exemple suivant inclut deux champs de référence :

1. Le champ WhoId est polymorphique et a un relationshipName Who. Il référence une piste et le champ E-mail indexé identifie de façon unique l'enregistrement parent.

2. Le champ OwnerId n'est pas polymorphique et a un relationshipName Owner. Il référence un utilisateur et le champ Id indexé identifie de façon unique l'enregistrement parent.
 

1Subject,Priority,Status,Lead:Who.Email,Owner.Id
2Test Bulk API polymorphic reference field,Normal,Not Started,lead@salesforcesample.com,005D0000001AXYz


La partie ObjectType: de l'en-tête de colonne du champ est requise uniquement pour un champ polymorphique. Si vous omettez cette syntaxe pour un champ polymorphique, vous recevez une erreur. Vous recevez également une erreur si vous indexez cette syntaxe pour un champ qui n'est pas polymorphique.
 

Lignes d'enregistrements CSV valides

L'API de transfert en masse applique un format strict pour les valeurs de champ afin d'optimiser le traitement des ensembles de données volumineux. Noter les points suivants lors de la génération de fichiers CSV qui contiennent des enregistrements Salesforce :

  • Le délimiteur des valeurs de champ d'une ligne doit être une virgule.
  • Si une valeur de champ contient une virgule, une nouvelle ligne ou un guillemet double, la valeur de champ doit être incluse entre guillemets doubles, par exemple : "Directeur des opérations, Région Ouest".
  • Si valeur de champ contient un guillemet double, il doit être échappé en le précédant d'un autre guillemet double, par exemple : "Correspond au standard ""Or"" défini".
  • Les valeurs de champs ne sont pas rognées. Un espace avant ou après un délimiteur virgule est inclus dans la valeur de champ. Un espace avant ou après un guillemet double génère une erreur pour la ligne. Par exemple, John,Smith est valide ; John, Smith est valide, mais la deuxième valeur est " Smith" ; ."John", "Smith" n'est pas valide.
  • Les valeurs de champs vides sont ignorées lors de la mise à jour des enregistrements. Pour définir une valeur de champ sur null, utilisez une valeur de champ #N/A.
  • Les champs qui ont un double type de données peuvent inclure des valeurs partielles. Les valeurs peuvent être stockées en notation scientifique si le chiffre est suffisamment grand (ou petit pour des chiffres négatifs), comme indiqué dans la spécification W3C XML Schema Part 2: Datatypes Second Edition.
Remarques :
  • Pour contourner ce problème, les utilisateurs peuvent essayer d'ouvrir le fichier .CSV dans Excel, puis de l'enregistrer. Cette opération peut parfois corriger certains problèmes de mise en forme.
  • Une seule ligne non valide peut entraîner l'échec de toute importation. Vous pouvez diviser le CSV en plus petits fichiers pour faciliter l'identification de l'enregistrement et/ou la colonne qui entraîne les erreurs ou les problèmes d'importation.
 

Exemple de fichier CSV

L'exemple de fichier CSV ci-dessous inclut deux enregistrements pour l'objet Contact. Chaque enregistrement contient six champs. Vous pouvez inclure n'importe quel champ pour un objet que vous traitez. Si vous utilisez ce fichier pour mettre à jour des comptes existants, tous les fichiers qui ne sont pas définis dans le CSV sont ignorés durant la mise à jour.

Vous devez inclure tous les champs requis lors de la création d'un enregistrement.
 

1FirstName,LastName,Title,ReportsTo.Email,Birthdate,Description
2Tom,Jones,Senior Director,buyer@salesforcesample.com,1940-06-07Z,"Self-described as ""the top"" branding guru on the West Coast"
3Ian,Dury,Chief Imagineer,cto@salesforcesample.com,,"World-renowned expert in fuzzy logic design.
4Influential in technology purchases."

Notez que le champ Description du dernier enregistrement inclut un saut de ligne. Par conséquent, la valeur de champ est incluse dans des guillemets doubles.
 

Considérations sur l'importation de données dans différents objets

  • Champs de référence - ID : un ID Salesforce est une chaîne alphanumérique de 15 caractères sensibles à la casse ou de 18 caractères non sensibles à la casse, qui identifie de façon unique un enregistrement particulier. Pour garantir la qualité des données, veillez à appliquer la casse adéquate à tous les ID Salesforce que vous saisissez dans le module Data Loader.
  • Champs de liste de sélection : votre valeur de champ doit correspondre exactement à l'une des valeurs de la liste de sélection. Si vous fournissez une autre valeur qui n'existe pas dans votre liste de sélection, elle n'est pas ajoutée à votre liste de sélection, et l'enregistrement échoue.
  • Champs de date : les champs de date doivent être mis en forme sous un format de date spécifique pris en charge par Data Loader. Pour l'Assistant d'importation de données, il n'est pas nécessaire de changer le format des champs de date et d'heure.
  • Champs booléens : vous pouvez utiliser la valeur True ou False pour mapper. Par exemple, si vous avez un champ de case à cocher dans votre enregistrement, vous pouvez utiliser la valeur True ou False pour le sélectionner ou le désélectionner.
  • Champs de devise : il n'est pas nécessaire d'ajouter des virgules ou le symbole de devise. Salesforce sélectionne automatiquement le format correspondant aux paramètres de devises par défaut de votre organisation.
  • Adresse e-mail : assurez-vous que l'adresse e-mail est correctement formatée, conformément à la norme RFC 5321, et ne contient pas de caractères non valides qui ne sont pas autorisés par les protocoles internationaux de messagerie. Exemples d'adresse e-mail non valide : 
 
  • Abc.example.com (caractère @ manquant)
  • A@b@c@example.com (un seul caractère @ est autorisé hors des guillemets)
  • a"b(c)d,e:f;g<h>i[j\k]l@example.com (aucun caractère spécial n'est autorisé dans la partie locale hors des guillemets)
  • just"not"right@example.com (les chaînes entre guillemets doivent être séparées par un point et former le seul élément de la partie locale)
  • this is"not\allowed@example.com (les espaces, les guillemets et les barres obliques inversées sont autorisés uniquement dans des chaînes entre guillemets et doivent être précédés d'une barre oblique inversée)
  • this\ still\"not\\allowed@example.com (même s'ils sont échappés (précédés d'une barre oblique inversée), les espaces, les guillemets et les barres obliques inversées doivent être placés entre guillemets)
  • john..doe@example.com (deux points avant @)
  • avec un inconvénient : Gmail laisse passer adresse e-mail#partie locale points ensemble
  • john.doe@example..com (deux points après @)
  • une adresse valide avec un espace de tête
  • une adresse valide avec un espace de fin
 
  • Règle de validation : si vous avez des règles de validation appliquées à un champ, assurez-vous que la valeur respecte les critères de la règle, sinon l'enregistrement échoue. Vous pouvez également choisir de remplacer la règle de validation afin de la désactiver avant le chargement.
  • Déclencheurs : si vous avez des déclencheurs dans l'objet pour lequel vous importez ou mettez à jour des enregistrements, assurez-vous que vos enregistrements n'échouent pas en raison de critères spécifiques non remplis. Vous pouvez contourner le déclencheur en le désactivant avant le chargement, puis le réactiver une fois le chargement terminé.


Lorsque vous insérez, supprimez ou mettez à jour des fichiers en utilisant Apex Data Loader, utilisez la fenêtre Mapping Dialog (Boîte de dialogue de mappage) pour associer des champs Salesforce à des colonnes de votre fichier CSV.

1. Pour faire correspondre automatiquement les champs et les colonnes, cliquez sur Auto-Match Fields to Columns (Correspondance auto. champs/colonnes). Le module Data Loader renseigne la liste au bas de la fenêtre en fonction de la similarité entre les noms de champ et de colonne. Pour une opération de suppression, la correspondance automatique fonctionne uniquement sur le champ ID.

2. Pour faire correspondre manuellement les champs et les colonnes, cliquez sur les champs de la liste de Salesforce du haut, puis faites-les glisser vers la liste des noms d'en-tête de colonne CSV du bas. Par exemple, si vous insérez de nouveaux enregistrements Compte où votre fichier CSV contient les noms de nouveaux comptes, cliquez sur le champ Nom puis faites-le glisser à droite du champ d'en-tête de colonne NOM.

3. Cliquez éventuellement sur Save Mapping (Enregistrer le mappage) pour enregistrer le mappage en vue d'une utilisation ultérieure. Saisissez un nom pour le fichier de mappage SDL. Si vous sélectionnez un fichier existant, le contenu de ce fichier est remplacé. Cliquez sur Yes pour confirmer cette action ou sur No pour choisir un autre fichier. 4. Cliquez sur OK pour utiliser le mappage dans le cadre de l'opération en cours.

Pour importer des données de fichiers CSV qui ne remplissent pas ces règles, mappez les champs de données du fichier CSV avec des champs de données Salesforce (pour plus d'informations, consultez Mappage de champs de données).

Numéro d’article de la base de connaissances

000381876

 
Chargement
Salesforce Help | Article