¿Cuál es la manera más fácil de obtener los datos para una sola tabla, eliminar una sola tabla o dividir todo el archivo de volcado en archivos que contienen tablas individuales? Por lo general, termino haciendo mucho viging regex, pero apuesto a que hay formas más fáciles de hacer esto con awk/perl, etc. La primera página de los resultados de Google trae un montón de scripts Perl que no funcionan.Manipulación de gigantes archivos de volcado de MySQL
Respuesta
Ahórrese muchas molestias y use mysqldump -T
si puede.
Desde el documentation:
--tab = ruta, -T ruta
archivos de datos separados por ficha Producir. Para cada tabla volcada, mysqldump crea un archivo tbl_name.sql que contiene la instrucción CREATE TABLE que crea la tabla, y un archivo tbl_name.txt que contiene sus datos . El valor de la opción es el directorio en el que escribir los archivos.
De forma predeterminada, los archivos de datos .txt se formatean con los caracteres de tabulación entre los valores de columna y una nueva línea al final de cada línea. El formato se puede especificar explícitamente utilizando las opciones --fields-xxx y --lines-ended-by.
Nota
Esta opción debe usarse solo cuando mysqldump se ejecuta en la misma máquina que el servidor mysqld. Debe tener el privilegio FILE, y el servidor debe tener permiso para escribir archivos en el directorio que especifique.
Cuando necesito extraer una sola tabla de un volcado sql, utilizo una combinación de grep, head y tail.
Ej:
grep -n "CREATE TABLE" dump.sql
Esto entonces los números de línea para cada uno da, por lo que si la mesa está en la línea 200 y la siguiente está en la línea 269, que hago:
head -n 268 dump.sql > tophalf.sql
tail -n 69 tophalf.sql > yourtable.sql
Me imagino que podría extenderse sobre esos principios para derribar una secuencia de comandos que dividiría todo en un archivo por tabla.
¿Alguien quiere ir a hacerlo aquí?
Otro poco que podrían ayudar a iniciar un bucle de bash va:
grep -n "CREATE TABLE " dump.sql | tr ':`(' ' ' | awk '{print $1, $4}'
Eso le da una buena lista de números de línea y los nombres de tabla como:
200 FooTable
269 BarTable
Maatkit parece muy apropiado para esto con mk-parallel-dump y mk-parallel-restore.
Esas herramientas ambos se han desaprobado y no se consideran adecuados para usar en copias de seguridad. –
This shell script tomará las tablas que desee y las pasará al splitted.sql
.
Es capaz de entender expresiones regulares ya que he agregado una opción sed -r
.
También MyDumpSplitter puede dividir el volcado en volcados de tabla individuales.
Estoy un poco tarde en eso, pero si puede ayudar a alguien, tuve que dividir un gran archivo de volcado SQL para importar los datos a otro servidor Mysql. lo que terminé haciendo fue dividir el archivo de volcado usando el comando del sistema.
dividida -l 1000 import.sql splited_file
Lo anterior se dividirá el archivo sql cada 1000 líneas.
Espero que esto ayude a alguien
- 1. Convierta un volcado de PostgreSQL en un volcado de MySQL
- 2. Volcado de MySQL dentro de la consola de mysql
- 3. Manipulación de MySQL subconsulta devuelve varias filas
- 4. ¿Dónde está el archivo de volcado MySQL?
- 5. Biblioteca para leer un volcado de MySQL?
- 6. contraseña de MySQL está arruinando mi volcado
- 7. Restaurar archivo de volcado MYSQL con línea de comando
- 8. La importación de 8GB de volcado mysql lleva mucho tiempo
- 9. Importar varios archivos de volcado .sql en la base de datos mysql desde el shell
- 10. MySQL volcado en archivos de texto CSV con nombres de columna en la parte superior?
- 11. Problema de estructura/manipulación de datos MySQL complicado
- 12. archivo de volcado de MySQL y líneas comentadas
- 13. Manipulación de permisos de archivos de Windows en Java
- 14. Depuración de archivos de volcado en Visual Studio
- 15. ¿Por qué se generan archivos de volcado de núcleo?
- 16. Comenzando con el análisis de archivos de volcado
- 17. Obtención de archivos HTML estáticos del volcado XML de Wikipedia
- 18. Cómo utilizar el volcado de MySQL desde una máquina remota
- 19. Crear un volcado de wordpress (.wxr) usando unix y mysql
- 20. ¿Convertir el archivo de volcado PostgreSQL a MySQL?
- 21. Generar volcado de datos MySQL en SQL desde PHP
- 22. querySelectorAll: manipulación de nodos
- 23. manipulación de matriz R
- 24. JSON manipulación de objetos
- 25. nodejs: manipulación de cadenas
- 26. Crear archivo de volcado desde la base de datos en mysql
- 27. Volcado de Postgres: pg_catalog.setval
- 28. manipulación
- 29. automatizado de excepciones de manipulación
- 30. Patrones de manipulación de cadenas
La salida de la cabeza puede ser simplemente canaliza a la cola - esto no es una mala idea – deadprogrammer
solución bastante interesante, pero Maatkit puede hacer lo mismo y aún más: D –