<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />Ho una tabella in JMP con alcune colonne numeriche, colonne di caratteri, colonne di date e un paio di colonne con grandi porzioni di testo (piene di caratteri speciali, virgole, .
Vorrei caricare questa tabella su MySQL ma sto affrontando alcune sfide. Ho provato diversi metodi:
Metodo 1: salva come CSV, carica tramite workbench/altro strumento MySQL
JMP non sembra codificare correttamente le parti di testo (caratteri speciali) nel CSV e quando carico il CSV, alcuni caratteri nei blocchi di testo vengono interpretati come celle diverse e l'intera riga di dati finisce per essere incasinata. Ho corretto manualmente "\n" e "\r" ma ci sono ancora alcuni altri caratteri che non sono ben codificati e impediscono il corretto caricamento del CSV.
Metodo 2: caricamento tramite JMP "carica tabella nel DB"
Sfortunatamente, questa opzione consente solo il caricamento AUTOMATICO (nessuna selezione del tipo di colonna dati) di una NUOVA tabella. Ciò fa sì che JMP definisca i blocchi di testo come CHAR (255) che non è abbastanza grande da contenere il testo che ho e quindi viene troncato.
La mia soluzione ideale:
- Vorrei semplicemente creare una tabella nel mio schema con le colonne e le definizioni di colonna corrette.
- Vorrei quindi utilizzare uno script per caricare i dati in quella tabella vuota (o no!) preesistente.
Ho cercato nella community e ho trovato frammenti di codice che potrebbero aiutarmi a iniziare a mettere insieme uno script per eseguire quanto sopra.
Tre domande allora:
- Sto facendo qualcosa di sbagliato durante la conversione in CSV o si tratta solo di un bug in JMP che deve essere risolto?
- Qualche altra idea/metodo che potresti pensare per caricare questo set di dati?
- Qualsiasi aiuto per mettere insieme lo script sopra sarebbe molto gradito!
Grazie in anticipo!
Sono stati apportati diversi miglioramenti in JMP 13 (disponibile a breve) rispetto all'integrazione del database (File->Database->Salva tabella e File->Database->Apri tabella).
sembra funzionare: ho creato un CSV da questa tabella:

E, dopo diverse false partenze, l'ho importato in questo modo:
caricare i dati nel file '/home/c/Desktop/windowsShare/stories.csv' sostituire nella tabella i campi delle storie terminati con ',' facoltativamente racchiusi da '"' righe terminate con '';
E poi ha scaricato i dati in formato esadecimale con
seleziona esadecimale(storia) dalle storie;
+------------------------------------------------- -----------------------------------------+
| esa(storia) |
+------------------------------------------------- -----------------------------------------+
cancellate le false partenze...
| 7468697320697320612074776F 0D 6C696E652073746F7279|
| 746869732069732061207468726565 0D 6C696E65 0D 73746F7279|
| 6F6E65206C696E6572|
+------------------------------------------------- -----------------------------------------+
Ho reso i caratteri CR (0D) in grassetto.
Non sono un esperto di MySQL; Non so se mysql può gestire meglio i nomi delle colonne nei dati.Ho fatto in modo che la tabella mysql e la tabella JMP avessero lo stesso ordine per farlo funzionare.
Senza HEX, è un po' difficile capire cosa sia successo:
seleziona * dalle storie;
+--------+---------------------------------------- ------+-------+
| nome | storia | grado |
+--------+---------------------------------------- ------+-------+
cancellate le false partenze
| nome | storia | 0|
storia in linea | 12|
storia | 12|
| Fred | una fodera | 99|
+--------+---------------------------------------- ------+-------+
9 righe in serie (0,00 sec)
(Questo viene visualizzato in una finestra della shell Linux).Il CR non ha un LF (il modo in cui è stata creata questa tabella dati).che sposta il cursore all'inizio della riga ma non fa avanzare la riga a una nuova riga... digitando sopra l'inizio della riga.I dati sono effettivamente nella tabella mysql, come mostrato dall'esadecimale.
Infine, il dump del CSV:
caricamentofiletesto("$desktop/stories.csv",blob)
Carattere in BLOB(
"nome, storia, voto ~0D~0A KATIE,~22questa è una storia su due~0D righe~22,12 ~0D~0A LOUISE,~22questo è un tre ~0D linea ~0D storia~22,12 ~0D~0A Fred, una nave di linea, 99 ~0D~0A ",
"ascii~hex"
)
Puoi vedere che JMP, su Windows, utilizza CRLF alla fine delle righe (grassetto ~0D~0A).
Che ne dite di:
1. Salva un file .csv con ogni campo tranne quelli di testo lungo
2. Carica il file .csv su MySQL
3. Dall'interno di JMP scorrere la tabella e aggiornare la tabella in MySQL con il campo di testo lungo