ERROR: BASE Data Connector, Cross Environment Data Access (CEDA) translation failed. Some character data was lost during transcoding while loading the table. Either the data contains characters that are not representable in the new encoding or truncation occurred during transcoding. The charMultiplier= import option may prevent the error.
Ce message signifie généralement qu'il n'y a pas assez d'espace dans une ou plusieurs colonnes de caractères pour convertir les données en UTF-8.
Ce problème peut se produire lorsque les caractères du codage d'origine sont convertis en un codage nécessitant plus d'octets pour représenter ces mêmes caractères. Par exemple, lorsque des caractères codés en tant que LATIN1, où chaque caractère est représenté avec 1 octet, sont transcodés en UTF-8, où certains caractères requièrent 1, 2 ou même 3 octets, une troncature peut se produire si la colonne de caractères est pas assez large.
Pour résoudre ce problème , vous pouvez utiliser le moteur CVP (character variable padding) avec l'instruction LIBNAME pour lire le jeu de données. Le moteur CVP ajoute un remplissage aux colonnes de caractères. Par défaut, les longueurs de variable de caractère sont multipliées par 1,5.
Dans SASStudio et en exécutant une proc contents sur cette table vous obtenez le message suivant :
libname zhold cvp "/opt/data/cedaIn"; libname zhnew "/opt/data/cedaOut"; proc copy in=zhold out=zhnew noclone; select staffwin; runLes bibliothèques accessibles avec le moteur CVP sont en lecture seule. Pour enregistrer une copie permanente des données, vous devez créer une nouvelle bibliothèque ( dans mon exemple zhnew) Vérifions maintenant les propriétés de notre nouvelle table :
proc contents data=zhnew.staffwin; run;Voici une partie de la sortie lorsque l'exemple de code est exécuté sur Linux à l'aide du codage UTF-8:
Il est maintenant possible de charger cette table dans CAS :









