Convertir CSV en XML, YAML, SQL et JSON
Collez les données et choisissez séparateur et format de sortie. Utilisez une ligne d’en-tête pour nommer les champs ; le SQL n’est pas exécuté.
Fonctionne localement dans votre navigateurCollez les données et choisissez séparateur et format de sortie. Utilisez une ligne d’en-tête pour nommer les champs ; le SQL n’est pas exécuté.
Fonctionne localement dans votre navigateurCollez du texte CSV, TSV ou séparé par des points-virgules, choisissez le séparateur (Détection automatique, Virgule, Onglet ou Point-virgule) et le format de sortie (XML, YAML, SQL INSERT ou JSON), puis cliquez sur Convertir. La première ligne sert d’en-tête et fournit les noms de champs.
Tout s’exécute dans ce navigateur : rien n’est téléversé et le SQL généré n’est que du texte — la page ne se connecte jamais à une base de données. Un tableau de 5 000 lignes est converti en environ un tiers de seconde, et le résultat peut être copié ou téléchargé sous converted-data.<format>.
La détection automatique lit les cinq premières lignes non vides et compte les séparateurs hors des cellules entre guillemets ; la virgule reste la valeur de repli si aucun candidat ne convainc. Un guillemet n’ouvre une cellule qu’en début de champ : un guillemet dans une valeur non citée reste donc dans la donnée, "" dans une cellule entre guillemets vaut un guillemet, et les séparateurs ou retours à la ligne entre guillemets restent dans la cellule. Le marqueur d’ordre des octets UTF-8 est retiré du premier en-tête et les lignes vides sont ignorées au lieu de devenir des enregistrements vides.
Les noms d’en-tête sont élagués ; un en-tête vide devient column_1, column_2, etc., et les noms en double sont renommés avec un suffixe numérique (a, a_2) au lieu de s’écraser. Les lignes plus courtes que l’en-tête gardent des valeurs vides et celles qui contiennent plus de valeurs conservent les cellules supplémentaires dans des champs column_N générés, ce que signale le panneau Constats.
JSON écrit un objet par ligne, chaque cellule étant une chaîne. XML écrit une déclaration XML 1.0 avec des éléments <rows> et <row> : les noms d’en-tête deviennent des noms d’élément (les caractères autres que lettres, chiffres, point, tiret et trait de soulignement deviennent _), un chiffre initial reçoit le préfixe _ et les noms répétés un suffixe. YAML écrit une séquence de mappings et met entre guillemets toute chaîne qu’un analyseur YAML lirait comme nombre, date, booléen ou null : 007, 2026-09-22 et yes restent du texte.
SQL INSERT écrit une instruction par ligne avec des identifiants entre accents graves et l’échappement MySQL/MariaDB : l’apostrophe est doublée, et l’antislash, le saut de ligne, le retour chariot, NUL et Ctrl-Z sont échappés, de sorte qu’un chemin Windows terminé par un antislash reste dans sa chaîne. Le nom de table est réduit aux lettres, chiffres et traits de soulignement, et le panneau Constats le signale lorsque cela modifie le nom saisi. Rien n’est envoyé à une base de données.
Les cellules restent du texte : le convertisseur ne décide jamais qu’une colonne est numérique et ne transforme pas les valeurs en dates, booléens ou NULL. Le SQL généré est de style MySQL/MariaDB (identifiants entre accents graves) ; d’autres serveurs acceptent les littéraux de chaîne mais peuvent exiger leur propre citation des identifiants. XML 1.0 ne représente pas la plupart des caractères de contrôle, qui sont retirés des valeurs XML.
Il n’y a ni sélecteur de fichier ni lecteur de tableur — collez le texte, ou copiez d’abord les lignes depuis Excel — et il vaut mieux analyser le résultat avec une bibliothèque du format cible avant de s’y fier. Une entrée réduite à l’en-tête renvoie un tableau JSON ou YAML vide avec un constat, la métrique du séparateur indique ce que la détection a choisi, et la taille pratique dépend de la mémoire de l’onglet.