<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />Tengo una tabla en JMP con algunas columnas numéricas, columnas de caracteres, columnas de fechas y un par de columnas con grandes fragmentos de texto (llenos de caracteres especiales, comas, .
Me gustaría subir esta tabla a MySQL pero me enfrento a algunos desafíos. He probado varios métodos:
Método 1: guardar como csv, cargar mediante workbench/otra herramienta mysql
JMP no parece codificar correctamente las piezas de texto (caracteres especiales) en el csv y cuando subo el csv, algunos de los caracteres de los bloques de texto se interpretan como celdas diferentes y la fila completa de datos termina confusa. Corregí "\n" y "\r" manualmente pero todavía hay algunos otros caracteres que no están bien codificados y hacen que el csv no se cargue correctamente.
Método 2: cargar a través de JMP "cargar tabla a la base de datos"
Desafortunadamente, esta opción solo permite la carga AUTOMÁTICA (sin selección de tipo de columna de datos) de una tabla NUEVA. Esto da como resultado que JMP defina los bloques de texto como CHAR (255), que no es lo suficientemente grande para acomodar el texto que tengo y, por lo tanto, se trunca.
Mi solución ideal:
- Simplemente crearía una tabla en mi esquema con las columnas y definiciones de columnas correctas.
- Luego usaría un script para cargar los datos en esa tabla vacía (¡o no!) preexistente.
He estado buscando en la comunidad y encontré fragmentos de código que pueden ayudarme a comenzar a crear un script para hacer lo anterior.
Tres preguntas entonces:
- ¿Estoy haciendo algo mal al convertir a csv o es solo un error en JMP que debe solucionarse?
- ¿Se te ocurre alguna otra idea/método para cargar este conjunto de datos?
- ¡Cualquier ayuda para elaborar el guión anterior será bienvenida!
¡Gracias de antemano!
Ha habido varias mejoras en JMP 13 (próximamente) con respecto a la integración de la base de datos (Archivo->Base de datos->Guardar tabla y Archivo->Base de datos->Abrir tabla).
parece funcionar: hice un CSV a partir de esta tabla:

Y, después de varios comienzos en falso, lo importó así:
cargar el archivo de datos '/home/c/Desktop/windowsShare/stories.csv' reemplazar en los campos de historias de la tabla terminados en ',' opcionalmente encerrados en líneas '"' terminadas en '';
Y luego volcó los datos en hexadecimal con
seleccione hexadecimal (historia) de las historias;
+------------------------------------------------- -----------------------------------------+
| maleficio (historia) |
+------------------------------------------------- -----------------------------------------+
inicios en falso eliminados...
| 7468697320697320612074776F 0D 6C696E652073746F7279 |
| 746869732069732061207468726565 0D 6C696E65 0D 73746F7279 |
| 6F6E65206C696E6572 |
+------------------------------------------------- -----------------------------------------+
Puse los caracteres CR (0D) en negrita.
No soy un experto en MySQL; No sé si mysql puede manejar mejor los nombres de las columnas en los datos.Hice que la tabla mysql y la tabla JMP tuvieran el mismo orden para que esto funcione.
Sin el HEX, es un poco difícil entender lo que pasó:
seleccione * de historias;
+--------+---------------------------------------- ------+-------+
| nombre | historia | grado |
+--------+---------------------------------------- ------+-------+
inicios en falso eliminados
| nombre | historia | 0 |
historia lineal | 12 |
historia | 12 |
| fred | una línea | 99 |
+--------+---------------------------------------- ------+-------+
9 filas en conjunto (0,00 seg)
(Esto se genera en una ventana de shell de Linux).El CR no tiene un LF (la forma en que se creó esta tabla de datos).que mueve el cursor al principio de la línea pero no avanza a una nueva línea... escribiendo sobre el principio de la línea.Los datos en realidad están en la tabla mysql, como se muestra en hexadecimal.
Finalmente, el volcado del CSV:
loadtextfile("$escritorio/stories.csv",blob)
Char a Blob(
"nombre, historia, grado ~0D~0A KATIE,~22esta es una historia de dos~0Dlíneas~22,12 ~0D~0A LOUISE, ~22 este es un tres ~0D línea ~0D historia~22,12 ~0D~0A Fred, una línea, 99 ~0D~0A ",
"ascii~hexadecimal"
)
Puede ver que JMP, en Windows, usa CRLF al final de las líneas (negrita ~0D~0A).
Qué tal si:
1. Guarde un archivo .csv con todos los campos excepto los campos de texto largo.
2. Sube el archivo .csv a MySQL
3. Desde JMP, recorra la tabla y actualice la tabla en MySQL con el campo de texto largo.