<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />Ich habe eine Tabelle in JMP mit einigen numerischen Spalten, Zeichenspalten, Datumsspalten und ein paar Spalten mit großen Textblöcken (voller Sonderzeichen, Kommas usw.).
Ich würde diese Tabelle gerne auf MySQL hochladen, stehe aber vor einigen Herausforderungen. Ich habe mehrere Methoden ausprobiert:
Methode 1 – Als CSV speichern, über Workbench/anderes MySQL-Tool hochladen
JMP scheint die Textteile (Sonderzeichen) nicht richtig in die CSV-Datei zu codieren, und wenn ich die CSV-Datei hochlade, werden einige der Zeichen in den Textblöcken als unterschiedliche Zellen interpretiert und die gesamte Datenzeile wird durcheinander gebracht. Ich habe „\n“ und „\r“ manuell korrigiert, aber es gibt immer noch einige andere Zeichen, die nicht gut codiert sind und dazu führen, dass die CSV-Datei nicht korrekt hochgeladen werden kann.
Methode 2 – Hochladen über JMP „Tabelle in DB hochladen“
Leider ermöglicht diese Option nur das AUTOMATISCHE Hochladen (keine Auswahl des Datenspaltentyps) einer NEUEN Tabelle. Dies führt dazu, dass JMP die Textblöcke als CHAR (255) definiert, was nicht groß genug ist, um den Text aufzunehmen, den ich habe, und daher abgeschnitten wird.
Meine ideale Lösung:
- Ich würde in meinem Schema einfach eine Tabelle mit den richtigen Spalten und Spaltendefinitionen erstellen.
- Ich würde dann ein Skript verwenden, um die Daten in die bereits vorhandene leere (oder nicht!) Tabelle hochzuladen.
Ich habe in der Community gesucht und Teile des Codes gefunden, die mir bei der Erstellung eines Skripts für die oben genannten Aufgaben helfen könnten.
Dann drei Fragen:
- Mache ich beim Konvertieren in CSV etwas falsch oder handelt es sich lediglich um einen Fehler in JMP, der behoben werden muss?
- Gibt es noch andere Ideen/Methoden, die Ihnen zum Hochladen dieses Datensatzes einfallen?
- Jede Hilfe bei der Zusammenstellung des obigen Skripts wäre sehr willkommen!
Dank im Voraus!
In JMP 13 (bald verfügbar) gab es mehrere Verbesserungen in Bezug auf die Datenbankintegration (Datei->Datenbank->Tabelle speichern und Datei->Datenbank->Tabelle öffnen).
Scheint zu funktionieren: Ich habe eine CSV aus dieser Tabelle erstellt:

Und nach mehreren Fehlstarts habe ich es so importiert:
Daten in die Datei „/home/c/Desktop/windowsShare/stories.csv“ laden, in Tabellenstorys Felder ersetzen, die mit „“ abgeschlossen sind, optional eingeschlossen durch „““ Zeilen, die mit „“ abgeschlossen sind;
Und dann die Daten im Hex-Format mit abgelegt
wähle Hex(Story) aus Stories aus;
+------------------------------------------------- ----------------------------------------+
| hex(Geschichte) |
+------------------------------------------------- ----------------------------------------+
Fehlstarts gelöscht...
| 7468697320697320612074776F 0D 6C696E652073746F7279 |
| 746869732069732061207468726565 0D 6C696E65 0D 73746F7279 |
| 6F6E65206C696E6572 |
+------------------------------------------------- ----------------------------------------+
Ich habe die CR-Zeichen (0D) fett dargestellt.
Ich bin kein MySQL-Experte; Ich weiß nicht, ob MySQL besser mit Spaltennamen in den Daten umgehen kann.Ich habe dafür gesorgt, dass die MySQL-Tabelle und die JMP-Tabelle dieselbe Reihenfolge haben, damit dies funktioniert.
Ohne das HEX ist es etwas schwer zu verstehen, was passiert ist:
* aus Geschichten auswählen;
+--------+------------------------- ------+-------+
| Name | Geschichte | Klasse |
+--------+------------------------- ------+-------+
Fehlstarts gelöscht
| Name | Geschichte | 0 |
Liniengeschichte | 12 |
Geschichte | 12 |
| Fred | einzeiler | 99 |
+--------+------------------------- ------+-------+
9 Reihen im Satz (0,00 Sek.)
(Dies wird in einem Linux-Shell-Fenster ausgegeben).Die CR verfügt über kein LF (so wie diese Datentabelle erstellt wurde).Dadurch wird der Cursor an den Zeilenanfang bewegt, es wird jedoch kein Zeilenvorschub in eine neue Zeile ausgeführt, sondern der Zeilenanfang wird überschrieben.Die Daten befinden sich tatsächlich in der MySQL-Tabelle, wie durch das Hex angezeigt.
Zum Schluss noch der Dump der CSV:
Loadtextfile("$desktop/stories.csv",blob)
Char To Blob(
„Name, Geschichte, Klasse ~0D~0A KATIE,~22das ist eine Geschichte mit zwei~0D-Zeilen~22,12 ~0D~0A LOUISE,~22das ist eine Drei ~0D Linie ~0D Geschichte~22,12 ~0D~0A Fred, ein Liner, 99 ~0D~0A ",
„ascii~hex“
)
Sie können sehen, dass JMP unter Windows CRLF am Zeilenende verwendet (fett ~0D~0A).
Wie wäre es mit:
1. Speichern Sie eine CSV-Datei mit jedem Feld außer den Langtextfeldern
2. Laden Sie die CSV-Datei auf MySQL hoch
3. Führen Sie innerhalb von JMP eine Schleife über die Tabelle aus und aktualisieren Sie die Tabelle in MySQL mit dem Langtextfeld