<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />J'ai un tableau dans JMP avec des colonnes numériques, des colonnes de caractères, des colonnes de date et quelques colonnes avec de gros morceaux de texte (pleins de caractères spéciaux, virgules, .
J'aimerais télécharger cette table sur MySQL mais je suis confronté à quelques défis. J'ai essayé plusieurs méthodes :
Méthode 1 - enregistrer au format CSV, télécharger via Workbench/autre outil MySQL
JMP ne semble pas coder correctement les morceaux de texte (caractères spéciaux) dans le csv et lorsque je télécharge le csv, certains caractères des blocs de texte sont interprétés comme des cellules différentes et la ligne complète de données finit par être gâchée. J'ai corrigé manuellement les "\n" et "\r" mais il y a encore d'autres caractères qui ne sont pas bien codés et qui empêchent le téléchargement correct du csv.
Méthode 2 - télécharger via JMP "télécharger la table vers la base de données"
Malheureusement, cette option permet uniquement le téléchargement AUTOMATIQUE (pas de sélection du type de colonne de données) d'une NOUVELLE table. Cela conduit JMP à définir les blocs de texte comme CHAR (255), ce qui n'est pas assez grand pour accueillir le texte que j'ai et il est donc tronqué.
Ma solution idéale :
- Je créerais simplement une table dans mon schéma avec les colonnes et définitions de colonnes correctes.
- J'utiliserais ensuite un script pour télécharger les données dans cette table vide (ou pas !) préexistante.
J'ai cherché dans la communauté et j'ai trouvé des morceaux de code qui peuvent m'aider à commencer à élaborer un script pour faire ce qui précède.
Trois questions alors :
- Est-ce que je fais quelque chose de mal lors de la conversion en CSV ou s'agit-il simplement d'un bug dans JMP qui doit être corrigé ?
- Avez-vous d'autres idées/méthodes auxquelles vous pourriez penser pour télécharger cet ensemble de données ?
- Toute aide pour mettre en place le script ci-dessus serait la bienvenue !
Merci d'avance!
Il y a eu plusieurs améliorations dans JMP 13 (à venir) en ce qui concerne l'intégration de la base de données (Fichier->Base de données->Enregistrer la table et Fichier->Base de données->Ouvrir la table).
semble fonctionner : j'ai fait un CSV à partir de ce tableau :

Et, après plusieurs faux départs, je l'ai importé comme ceci :
charger les données dans le fichier '/home/c/Desktop/windowsShare/stories.csv' et remplacer dans la table les champs terminés par ',' éventuellement entourés par des lignes '"' terminées par '' ;
Et puis j'ai vidé les données en hexadécimal avec
sélectionnez l'hexagone (histoire) parmi les histoires ;
+------------------------------------------------- -----------------------------------------+
| hex(histoire) |
+------------------------------------------------- -----------------------------------------+
faux départs supprimés...
| 7468697320697320612074776F 0D 6C696E652073746F7279 |
| 746869732069732061207468726565 0D 6C696E65 0D 73746F7279 |
| 6F6E65206C696E6572 |
+------------------------------------------------- -----------------------------------------+
J'ai mis les caractères CR (0D) en gras.
Je ne suis pas un expert MySQL ; Je ne sais pas si MySQL peut mieux gérer les noms de colonnes dans les données.J'ai fait en sorte que la table mysql et la table JMP aient le même ordre pour que cela fonctionne.
Sans le HEX, il est un peu difficile de comprendre ce qui s'est passé :
sélectionnez * parmi les histoires ;
+--------+---------------------------------------- ------+-------+
| nom | histoire | qualité |
+--------+---------------------------------------- ------+-------+
faux départs supprimés
| nom | histoire | 0 |
histoire en ligne | 12 |
histoire | 12 |
| fred | une doublure | 99 |
+--------+---------------------------------------- ------+-------+
9 lignes dans un ensemble (0,00 sec)
(Ceci est affiché dans une fenêtre shell Linux).Le CR n'a pas de LF (la façon dont cette table de données a été créée).qui déplace le curseur au début de la ligne mais ne fait pas de saut de ligne vers une nouvelle ligne... en tapant sur le début de la ligne.Les données se trouvent en fait dans la table MySQL, comme le montre l'hexadécimal.
Enfin, le dump du CSV :
loadtextfile("$desktop/stories.csv",blob)
Char à Blob (
"nom, histoire, niveau ~0D~0A KATIE,~22c'est une histoire à deux~0D~22,12 ~0D~0A LOUISE, ~ 22, c'est un trois ~0D doubler ~0D histoire~22,12 ~0D~0A Fred, une doublure, 99 ~0D~0A ",
"ascii~hexadécimal"
)
Vous pouvez voir que JMP, sous Windows, utilise CRLF aux extrémités des lignes (gras ~0D~0A).
Que diriez-vous:
1. Enregistrez un fichier .csv avec chaque champ à l'exception des champs de texte longs
2. Téléchargez le fichier .csv sur MySQL
3. Depuis JMP, parcourez la table et mettez à jour la table dans MySQL avec le champ de texte long.