Loading

Preparar un archivo CSV para importar o actualizar en Salesforce

Fecha de publicación: Nov 10, 2021
Solución
 
Advertencia
Haga siempre una copia de seguridad de sus datos antes de realizar cualquier operación con datos. Consulte Exportación de datos de copia de seguridad desde Salesforce o Exportar datos si desea más información. Se recomienda realizar una prueba con un pequeño subconjunto de registros para asegurar que la operación se realizó correctamente; para ello, abra manualmente los registros y compruebe que son correctos en Salesforce.


Preparación de archivos CSV

La primera fila (fila de encabezado) en un archivo CSV enumera los nombres de campos para el objeto que está procesando. Cada fila posterior se corresponde con un registro en Salesforce. Un registro consta de una serie de campos que están delimitados por comas. Un archivo CSV puede contener múltiples registros y se conoce como un lote.


Todos los registros de un archivo CSV deben ser para el mismo objeto. Usted especifica este objeto en el trabajo asociado con el lote. Todos los lotes asociados con un trabajo deben contener registros para el mismo objeto.


Procesamiento de archivos CSV con la API masiva:

  • Los archivos deben estar en formato UTF-8.
  • La API masiva solo admite comas como delimitador.
    • Si está utilizando un equipo internacional, el archivo .CSV generado en Excel probablemente no esté delimitado por comas. Puede comprobar si su delimitador de archivos .CSV es una coma abriéndolo en la aplicación Bloc de notas en su equipo.
    • Si ve Tom;Jones;buyer@salesforcesample.com significa que el delimitador actual es un punto y coma en vez de una coma. Esto dará como resultado problemas de importación con su archivo.
      • Sustituya los puntos y comas por comas. En un PC por ejemplo, puede pulsar CTRL + R en su teclado para Reemplazar y luego guardar el archivo.
  • La API masiva está optimizada para procesar grandes conjuntos de datos y tiene un formato estricto para los archivos CSVLa forma más sencilla de procesar archivos CSV es activar la API masiva para el Cargador de datos.
  • Deberá incluir todos los campos obligatorios cuando cree un registro. 
  • Si está actualizando un registro, cualquier campo que no esté definido en el archivo CSV se ignorará durante la actualización.
 

Campos de relación en una fila de encabezado

Muchos objetos en Salesforce están relacionados con otros objetos. Por ejemplo, Cuenta es un principal de Contacto. Puede agregar una referencia a un objeto relacionado en un archivo CSV que representa la relación en un encabezado de columna.

Cuando esté procesando registros en la API masiva, utiliza la sintaxis RelationshipName.IndexedFieldName en un encabezado de columna CSV para describir la relación entre un objeto y su principal, donde RelationshipName es el nombre de la relación del campo y IndexedFieldName es el nombre del campo indexado que identifica en exclusiva el registro principal. Utilice la llamada describeSObjects() en la API de SOAP para obtener el valor de la propiedad relationshipName para un campo.

Algunos objetos tienen relaciones consigo mismos. Por ejemplo, el campo Reporta a para un contacto es una referencia a otro contacto. Si está insertando un contacto, podría utilizan un encabezado de columna ReportsTo.Email para indicar que está utilizando el campo Correo electrónico de un contacto para identificar en exclusiva el campo Reporta a para un contacto.

La parte ReportsTo del encabezado de columna es el valor de la propiedad relationshipName para el campo Reporta a.

El siguiente archivo CSV utiliza una relación:
 

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


Notas:
 

  1. Puede utilizar una relación secundario-principal, pero no puede utilizar una relación principal-secundario.
  2. Puede utilizar una relación secundario-principal, pero no puede ampliarla para utilizar una relación secundario-principal-principal superior.
  3. Solo puede utilizar campos indexados en el objeto principal.
    • Un campo personalizado está indexado si se selecciona su campo Id. externo.
    • Una campo estándar está indexado si su propiedad idLookup está establecida en true
    • Consulte la columna Propiedades de campos en la tabla de campos para los objetos estándar.


Campos de relaciones para objetos personalizados

Los objetos personalizados utilizan campos personalizados para el seguimiento de relaciones entre objetos. Utilice el nombre de relación que termina en __r(guión bajo-guión bajo-r), para representar una relación entre dos objetos personalizados. Puede agregar una referencia a un objeto relacionado que representa la relación en un encabezado de columna.


Si el objeto secundario tiene un campo personalizado con un nombre de API Mother_Of_Child__c que apunta a un objeto personalizado principal y el objeto principal tiene un campo que utiliza un nombre de API External_ID__c, utilice el encabezado de columna Mother_Of_Child__r.External_ID__c para indicar que está utilizando el campo Id. externo del objeto principal para identificar en exclusiva el campo Mother Of Child. Para utilizar un nombre de relación en un encabezado de columna, sustituya __c en el campo personalizado del objeto secundario por __r.

El siguiente archivo CSV utiliza una relación:
 

1 Name,Mother_Of_Child__r.External_ID__c 2 CustomObject1,123456
Para obtener más información, revise Introducción a SOQL y SOSL.

Relaciones para campos polimórficos

Un campo polimórfico puede hacer referencia a más de un tipo de objeto como principal. Por ejemplo, un Contacto o un Candidato pueden ser el principal de una tarea. En otras palabras, el campo WhoId de una tarea puede contener el identificador de un Contacto o un Candidato. 


Ya que un campo polimórfico es más flexible, la sintaxis del encabezado de la columna tiene un elemento extra para definir el tipo del objeto principal. La sintaxis es ObjectType:RelationshipName.IndexedFieldName.


El siguiente ejemplo incluye dos campos de referencia.
 

  1. El campo WhoId es polimórfico y tiene un relationshipName Who. Hace referencia a un Candidato y el campo Correo electrónico indexado identifica en exclusiva el registro principal.
  2. El campo OwnerId no es polimórfico y tiene un relationshipName Owner. Hace referencia a un Usuario y el campo Id. indexado identifica en exclusiva el registro principal.
     
El siguiente archivo CSV utiliza campos polimórficos:
1 Subject,Priority,Status,Lead:Who.Email,OwnerId 2 Test Bulk API polymorphic reference field,Normal,NotStarted,lead@salesforcesample.com,005D0000001AXYz



Filas de registros CSV válidas

La parte ObjectType: de un encabezado de columna de campo solo se requiere para un campo polimórfico. Recibirá un error si omite esta sintaxis para un campo polimórfico. También recibirá un error si incluye esta sintaxis para un campo que no sea polimórfico.


La API masiva utiliza un formato estricto para valores de campo para optimizar el procesamiento de grandes conjuntos de datos. Recuerde lo siguiente cuando genere archivos CSV que contengan registros de Salesforce:
 

  • El delimitador para los valores de campos en una fila debe ser una coma.
  • Si un valor de campo contiene una coma, una nueva línea o comillas dobles, el valor del campo deberá contenerse dentro de comillas dobles, como por ejemplo: "Director de operaciones, Región del oeste".
  • Si un valor de campo contiene comillas dobles, las comillas dobles deberán incluirse en una secuencia de escape con las anteriores, como por ejemplo: "Este es el estándar de ""oro""".
  • Los valores de campo no se recortan. Se incluye un espacio anterior o posterior a la coma delimitadora en el valor de campo. Un espacio antes o después de unas comillas dobles genera un error para la fila.
    • Por ejemplo, John,Smith es válido; John, Smith es válido, pero si el segundo valor es " Smith"; ."John", "Smith" no es válido.
  • Los valores de campos vacíos se ignoran cuando actualiza los registros. Para establecer un valor de campo en nulo, utilice un valor de campo de #N/A.
  • Los campos con un tipo de datos doble pueden incluir valores fraccionados. Los valores pueden almacenarse en notación científica si el número es lo suficientemente grande (o bien, para números negativos, lo suficientemente pequeños), según lo indica el Esquema XML W3C XML parte 2: especificación de Tipos de datos segunda edición.
  • Se sabe que Excel elimina los ceros iniciales en los archivos .CSV. Asegúrese de revisar los valores de números (por ej. los códigos postales) antes de importar.
 
Notas:
  • Como solución, los usuarios pueden intentar abrir el archivo .CSV en Excel y luego guardar. Esto puede a veces corregir ciertos problemas de formato.
  • Tan solo una fila no válida puede provocar que falle una importación completa. Se puede dividir un el CSV en archivos más pequeños para ayudar a identificar qué registro o columna está provocando errores o problemas de importación.


Archivo CSV de muestra


La siguiente muestra de CSV incluye dos registros para el objeto Contacto. Cada registro contiene seis campos. Puede incluir cualquier campo para un objeto que esté procesando. Si utiliza este archivo para actualizar cuentas existentes, cualquier campo que no esté definido en el archivo CSV se ignorará durante la actualización.


Deberá incluir todos los campos obligatorios cuando cree un registro.
 

1 FirstName,LastName,Title,ReportsTo.Email,Birthdate,Description 2 Tom,Jones,Senior Director,buyer@salesforcesample.com,1940-06-07Z,"Se define como el gurú de las marcas ""más importante"" de la costa oeste" 3 Ian,Dury,Chief Imagineer,cto@salesforcesample.com,,"Experto reconocido en el mundo en el diseño de lógica difusa. Para influencia en compras de tecnología."



Observe que el campo Description del último registro incluye un salto de línea, de modo que el valor del campo se encierra entre comillas dobles.
 

Consideraciones sobre la importación de datos en objetos diferentes

 
  • Campos de búsqueda - ID ; Un identificador de Salesforce es una cadena de 15 caracteres que distingue entre mayúsculas y minúsculas o de 18 caracteres que no distingue entre mayúsculas y minúsculas que identifica en exclusiva un registro en particular. Para garantizar la calidad de los datos, asegúrese de que todos los identificadores de Salesforce que introduzca en el Cargador de datos tengan las mayúsculas y minúsculas correctas.
  • Campos de lista de selección: El valor de su campo debe coincidir exactamente con uno de los valores de la lista de selección. Si proporciona cualquier otro valor nuevo que no exista en su lista de selección y que no se agregue hará fallar el registro.
  • Campos de fecha: Los campos de fecha deben tener el formato como se describe en Formato de los datos de 'Date' y 'Date Time' en un archivo CSV; en el Asistente de importación de datos no es necesario cambiar el formato de los campos de fecha y hora.
  • Campos booleanos: Puede utilizar el valor True o False para asignar. Por ejemplo, si tiene un campo de casilla de verificación en su registro, para marcar o no marcar puede utilizar el valor True o False respectivamente.
  • Campos de divisa: No tiene que agregar comas o el símbolo de divisa. Salesforce seleccionará automáticamente el formato según los parámetros de divisa predeterminados de su organización.
  • Dirección de correo electrónico: Asegúrese de que el correo electrónico tenga el formato correcto según RFC 5321 y no incluya caracteres no válidos que no se permiten según los protocolos internacionales de correo electrónico. Algunos ejemplos de correos electrónicos no válidos:
    • Abc.ejemplo.com (sin carácter @)
    • A@b@c@ejemplo.com (solo se permite una @ fuera de comillas)
    • a"b(c)d,e:f;g<h>i[j\k]l@ejemplo.com (ninguno de los caracteres especiales de esta parte local se permiten fuera de comillas)
    • simplemente"no"escorrecto@ejemplo.com (las cadenas entre comillas deben estar separadas por puntos o ser el único elemento que conforme la parte local)
    • esto "nose\permite@ejemplo.com (los espacios, las comillas y las barras invertidas solo pueden aparecer cuando estén dentro de cadenas con comillas y precedidas de una barra invertida)
    • esto\ tampoco\"se\\permite@ejemplo.com (incluso con una secuencia de escape(precedida de una barra invertida), los espacios, las comillas y las barras invertidas tienen que contenerse entre comillas)
    • juan..nadie@ejemplo.com (doble espacio antes de la @)
    • una salvedad: Gmail permite dirección #parte-local con puntos juntos
    • juan.nadie@ejemplo..com (doble espacio después de la @)
    • una dirección válida con un espacio inicial
    • una dirección válida con un espacio final
  • Regla de validación: Asegúrese de que si tiene cualquier regla de validación aplicada a campos, su valor se ajusta a los criterios para esa regla de validación o el registro fallará. También puede elegir sustituir las reglas de validación para desactivarlas antes de la carga.
  • Desencadenadores: Asegúrese de que si tiene desencadenadores en el objeto que está importando o para el que está actualizando registros y que sus registros fallan debido a que no se cumplen criterios específicos. Podría seleccionar omitir el desencadenador desactivándolo antes de cargar y luego activándolo de nuevo después de que se complete la carga.


Cuando inserta, elimina o actualiza archivos empleando el Cargador de datos de Apex, utilice la ventana Mapping Dialog (Cuadro de diálogo de asignación) para asociar campos de Salesforce con las columnas de su archivo CSV.
 

  1. Para hacer coincidir automáticamente campos con columnas, haga clic en Auto-Match Fields to Columns (Coincidir automáticamente campos con columnas). El Cargador de datos rellena la lista de la parte inferior de la ventana en base a la similaridad de nombres de campos y columnas. Para una operación de eliminación, la coincidencia automática solo funciona en el campo ID.
  2. Para hacer coincidir manualmente campos con columnas, haga clic y arrastre campos desde la lista de campos de Salesforce de la parte superior de la lista con los nombres de encabezado de la columna del archivo CSV de la parte inferior. Por ejemplo, si está insertando nuevos registros Cuenta cuando su archivo CSV contenga los nombres de nuevas cuentas, haga clic y arrastre el campo Nombre a la derecha del campo de encabezado de la columna NOMBRE.
  3. También puede hacer clic en Save Mapping (Guardar asignación) para guardar esta asignación para un uso futuro. Especifique un nombre para el archivo de asignación SDL. Si selecciona un archivo existente, el contenido de ese archivo se sustituye. Haga clic en Yes (Sí) para confirmar esta acción o en No para seleccionar otro archivo. 4. Haga clic en OK (Aceptar) para utilizar su asignación para la operación vigente.


Para importar datos desde archivos CSV que no cumplen estas reglas y asignar los campos en el archivo CSV a campos de datos de Salesforce, revise Asignación de campos de datos.


Consulte también:


Vídeos de Salesforce en YouTube
Número del artículo de conocimiento

000381876

 
Cargando
Salesforce Help | Article