MYSQL Dump solo ciertas filas

95

Estoy tratando de hacer un volcado de mysql de algunas filas en mi base de datos. Luego puedo usar el volcado para cargar esas pocas filas en otra base de datos. El código que tengo funciona, pero lo vuelca todo. ¿Cómo puedo hacer que mysqldump solo descargue ciertas filas de una tabla?

Aquí está mi código:


mysqldump --opt --user=username --password=password lmhprogram myResumes  --where=date_pulled='2011-05-23' > test.sql

Shattuck
fuente

Respuestas:

141

Solo arregla tu --whereopción. Debe ser una cláusula WHERE de SQL válida, como:

--where="date_pulled='2011-05-23'"

Tiene el nombre de la columna fuera de las comillas.

AJ.
fuente
1
Gracias hizo exactamente lo que necesitaba. ¡Gracias por la ayuda!
Shattuck
@AJ, ¡excelente información! ¡Gracias!
Roman Newaza
2
Para la condición IN , simplemente podemos usar --where="id IN(1,2,6,10)". Donde id es la columna en la tabla. Ref --where
Yogesh
9
Solo una nota para cualquiera como yo que use esto para canalizar un volcado de datos grande a otro servidor que se rompió en el medio, si no especifica --no-create-infojunto con su cláusula where, ¡el nuevo volcado recreará la tabla y eliminará los datos ya transferidos! Puede ser obvio, pero ahora me ha atrapado dos veces.
georgiecasey
Tenga en cuenta que el problema no fue que el nombre de la columna esté fuera de las comillas. Este es un comando de shell, por lo que debe escribir la sintaxis de shell para la cadena date_pulled='2011-05-23'. Eso significa que debe citar o escapar los caracteres de comillas simples, por lo que se incluyen en la cadena en lugar de interpretarse como comillas en la sintaxis de shell. Agregar comillas dobles alrededor de todo lo hace, pero también lo haría --where=date_pulled="'2011-05-23'"(o --where=date_pulled=\'2011-05-23\', o incluso --where=date_pulled"'"2011-05-23"'").
Ben
32

Debe citar la cláusula "dónde".

Tratar

mysqldump --opt --user=username --password=password lmhprogram myResumes  --where="date_pulled='2011-05-23'" > test.sql
Neville Kuyt
fuente
1
Eso era exactamente lo que necesitaba. Otra persona respondió justo antes que tú y yo seleccioné su respuesta, pero te voté a favor de la ayuda.
Shattuck
1
Hay otra forma de usar una consulta como esta: CREATE TABLE new_table AS (SELECT * FROM myResumes WHERE where = date_pulled = '2011-05-23'); Luego, simplemente puede exportar esta tabla a través de mysqldump.
Vinayagam
1

Utilice este código para filas de tabla específicas, utilizando la condición LIKE.

mysqldump -u root -p sel_db_server case_today --where="date_created LIKE '%2018
%'" > few_rows_dump.sql
Rokonz Zaz
fuente