0

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

2

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?

+0

fichiers S3 sont générés dynamiquement. J'ai besoin d'une solution pour le réparer dans le datapipeline. – tv3free

+0

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

+0

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

1

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:

  1. 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.
  2. 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 RdsDatabaseJdbcDatabase (voir properties reference):

    "jdbcProperties": "useUnicode=true,characterEncoding=UTF-8"

+0

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

+0

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

+0

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