Je suis nouveau sur AWS Dataapipeline. J'ai créé une ligne de données réussie pour extraire tout le contenu de RDS vers le compartiment S3. Tout fonctionne. Je vois mon fichier .csv dans le seau S3. Mais je stocke les noms espagnols dans ma table, en csv je vois "Garc�a" au lieu de "García"AWS Datapipeline - Problème avec les caractères accentués
Répondre
On dirait que la mauvaise page de codes est utilisée. Il suffit de référencer la page de code correcte et vous devriez aller bien. Le sujet suivant pourrait aider: Text files uploaded to S3 are encoded strangely?
Cette question est un peu similaire à cette Text files uploaded to S3 are encoded strangely?. Si oui, veuillez y référer ma réponse.
AWS DataPipeline est implémenté en Java et utilise les pilotes JDBC (Java Database Connectivity) (en particulier, MySQL Connector/J pour MySQL dans votre cas) pour se connecter à la base de données. Selon la section Using Character Sets and Unicode de la documentation, le jeu de caractères utilisé par le connecteur est automatiquement déterminé en fonction de la variable système character_set_server
sur le serveur RDS/MySQL, qui est définie par défaut sur latin1
.
Si ce paramètre ne correspond pas à votre application (exécution SHOW VARIABLES LIKE 'character%';
dans un client MySQL pour confirmer), vous avez deux options pour corriger cela:
- Set
character_set_server
àutf8
sur votre RDS/serveur MySQL. Pour effectuer ce changement de façon permanente à partir de la console RDS, voir Modifying Parameters in a DB Parameter Group pour les instructions. Passez des propriétés JDBC supplémentaires dans votre configuration DataPipeline pour remplacer le jeu de caractères utilisé par la connexion JDBC. Pour cette approche, ajoutez les propriétés suivantes JDBC à votre objet ou
RdsDatabase
JdbcDatabase
(voir properties reference):"jdbcProperties": "useUnicode=true,characterEncoding=UTF-8"
Je ne suis pas sûr à 100% de la syntaxe pour passer plusieurs propriétés à 'jdbcProperties' - la documentation dit seulement" Paires de la forme A = B qui seront définies comme propriétés sur les connexions jdbc pour cette base de données ". Il pourrait plutôt être 'useUnicode = true & characterEncoding = UTF-8' ou quelque chose d'autre entièrement. Faites-moi savoir si l'une des deux formes fonctionne si vous essayez cette option. – wjordan
Vous avez raison. Il m'a donné une erreur - La propriété de connexion 'allowMultiQueries' n'accepte que les valeurs du formulaire: 'true', 'false', 'yes' ou 'no'. La valeur 'true, useUnicode = true, characterEncoding = UTF-8' ne fait pas partie de cet ensemble. – tv3free
et n'est pas correct non plus. La propriété de connexion 'allowMultiQueries' n'accepte que les valeurs du formulaire: 'true', 'false', 'yes' ou 'no'. La valeur 'true & useUnicode = true & characterEncoding = UTF-8' ne fait pas partie de cet ensemble. – tv3free
fichiers S3 sont générés dynamiquement. J'ai besoin d'une solution pour le réparer dans le datapipeline. – tv3free
Le transfert de pipeline modifie-t-il vos données? Cela n'aurait aucun sens mais je pourrais avoir tort. Vos données sont mal interprétées par votre processus d'exportation ou d'importation suite à l'utilisation d'une page de code incorrecte (selon vos besoins). – iLikeMySql
Mes données vont bien. Mes apis fonctionnent bien et servent le site Web bien. J'essaye d'obtenir le CSV téléchargeable qui me donne des ennuis. S3 n'est pas un problème non plus. – tv3free