En una operación de copia de seguridad y recuperación de datos mysql, se encontró un problema: tras usar sqlyog para la copia de seguridad y luego recuperar los datos en otro servidor, el separador "'" se consumía debido al campo varbinary en una de las tablas (debido al problema de codificación binaria, el separador de comillas se trataba como parte de los datos), de modo que los datos no podían importarse normalmente.
Se usaron algunas herramientas de texto para el procesamiento, pero no tuvieron éxito, algunas podían ser reconocidas, pero modificaban automáticamente los datos codificados binarios, y otras inserían otros datos binarios, resultando aún ilegibles.
Así que considera otros métodos: lee los datos y deletrea la sentencia SQL, y luego importarla. Los métodos específicos son:
(1) Utilizar la función HEX para leer los datos al exportar y convertir los datos binarios en una cadena hexadecimal;
seleccionar HEX(binField) desde testTable;
(2) Utilizar la función UNHEX para convertir la cadena hexadecimal en la base de datos binaria de importación de datos durante la importación;
insertar en testTable binField values(UNHEX(@hexstr));
El siguiente código demuestra la funcionalidad de HEX y UNHEX:
SELECT HEX ('esto es un test str') y el resultado de la consulta es: 746869732069732061207465737420737472 SELECT UNHEX('746869732069732061207465737420737472'), y el resultado de la consulta es: esto es un test str
También puedes leer el carácter hexadecimal directamente, añadiendo un prefijo 0x a la cadena: SELECT 0x746869732069732061207465737420737472, el resultado de la consulta es: esto es una fuerza de prueba
Además, también puedes usar métodos binarios de importación y exportación para hacer copias de seguridad y restaurar datos. Aquí no hay discusión.
|