¿Cómo exportar una base de datos mysql usando el símbolo del sistema?

342

Tengo una base de datos que es bastante grande, así que quiero exportarla usando el símbolo del sistema, pero no sé cómo hacerlo.

Estoy usando WAMP

Starx
fuente
66
DOS? ¿Estás usando Windows 98? ¿O te refieres al símbolo del sistema?
jle
De usted está usando wamp, también debe tener phpmyadmin, con la opción de exportación
Lars C. Magnusson

Respuestas:

536

Primero verifique si su línea de comando reconoce el comando mysql. Si no, ve al comando y escribe:

set path=c:\wamp\bin\mysql\mysql5.1.36\bin

Luego use este comando para exportar su base de datos:

mysqldump -u YourUser -p YourDatabaseName > wantedsqlfile.sql

Luego se le pedirá la contraseña de la base de datos .

Esto exporta la base de datos a la ruta en la que se encuentra actualmente, mientras ejecuta este comando

Nota: Aquí hay algunas instrucciones detalladas sobre importación y exportación.

Starx
fuente
77
da error "mysqldump: Error obtenido: 1049: Base de datos desconocida 'thepassword' al seleccionar la base de datos" pero funcionó cuando borro "-p userpassword"
Ateş Danış
11
@ AteşDanış No hay espacio entre -py thepassword.
Charles Wood el
44
Simplemente debe usar -py luego se le pedirá la contraseña. De esta manera se evita tener su contraseña guardada por ejemplo, en.bash_history
nuala
77
Para mí, este comando funciona: mysqldump -u YourUser -p YourDatabaseName> wantedsqlfile.sql (Escriba el comando, presione Intro, y luego se ingresará la Contraseña).
shasi kanth
3
Especificar una contraseña en la línea de comando debe considerarse inseguro.
wappy
112

Simplemente use el siguiente comando,

Para exportación:

mysqldump -u [user] -p [db_name] | gzip > [filename_to_compress.sql.gz] 

Para importar:

gunzip < [compressed_filename.sql.gz]  | mysql -u [user] -p[password] [databasename] 

Nota: No hay espacio entre la palabra clave '-p' y su contraseña.

Srinivasan.S
fuente
1
Creo que te perdiste el hecho de que está usando WAMP - Windows ... gunzip / gzip no están incluidos en Windows. Es posible que ejecute su comando después de instalar algunas cosas, pero creo que se ha perdido ese hecho.
Rolf
2
La especificación gzip -9hace que el archivo resultante sea un poco más pequeño, porque se usa la compresión máxima.
AntonK
39

En primer lugar, abra el símbolo del sistema y luego abra el directorio bin en cmd (espero que esté al tanto de los comandos cmd ) vaya al directorio bin de su carpeta MySql en los archivos del programa WAMP .

ejecutar comando

mysqldump -u db_username -p database_name > path_where_to_save_sql_file

presione enter system exportará una base de datos particular y creará un archivo sql en la ubicación dada.

espero que lo tengas :) si tienes alguna pregunta, házmelo saber.

Mitesh vaghela
fuente
Amigo, he intentado explicar un poco el proceso. en lugar de dar una orden directa
Mitesh vaghela
38

Bueno, puedes usar el siguiente comando,

mysqldump --databases --user=root --password your_db_name > export_into_db.sql

y el archivo generado estará disponible en el mismo directorio donde ejecutó este comando.

Puede encontrar más información sobre la referencia oficial para mysqldump: Importar Exportar MySQL DB

Nota : use en --databaseslugar de --databaseya que el último ya no es compatible.

Disfruta :)

Umesh Patil
fuente
44
Para aquellos que reciben un error como "Acceso denegado al usar LOCK TABLES", debe agregar el parámetro "--single-transaction" al comando.
Skyrpex
Obtuve un error, mysqldump: [ERROR] unknown option '--database'pero la exclusión del ingenio --databasefuncionó.
hejdav
@Skyrpex Gracias, esa fue la solución que estaba buscando.
Martijn
22

Vaya al símbolo del sistema en esta ruta,

C:\Program Files (x86)\MySQL\MySQL Server 5.0\bin>

Luego, dé este comando para exportar su base de datos ( sin espacio después de -p )

mysqldump -u[username] -p[userpassword] yourdatabase > [filepath]wantedsqlfile.sql

usuario2484830
fuente
21

Localice su instancia de mysql con:

which mysql

Si esto es correcto, exporte con lo siguiente (de lo contrario, vaya a la instancia de mysql en su carpeta mamp en bin):

mysqldump -u [username] -p [password] [dbname] > filename.sql

Y si desea comprimirlo al mismo tiempo:

mysqldump -u [username] -p [password] [db] | gzip > filename.sql.gz

Luego puede mover este archivo entre servidores con:

scp user@xxx.xxx.xxx.xxx:/path_to_your_dump/filename.sql.gz your_detination_path/

(donde xxx.xxx.xxx.xxx es la dirección IP del servidor)

Y luego importarlo con:

gunzip filename.sql.gz | mysql -u [user] -p [password] [database]
Abierto
fuente
44
Nuevamente, W AMP => Windows. que es un comando de Linux. gunzip / gzip no están incluidos en Windows, y es posible que no estén disponibles. scp ... entiendes el punto.
Rolf
La respuesta de Opentuned es genial . Una pequeña cosa es eliminar el actual passwordde la línea de comando: mysqldump -u [nombre de usuario] -p [nombrebd]> filename.sql Esto evita que las personas busquen en su historial la contraseña.
Vincent
1
@Opentuned, ¿Qué pasa con el fetiche de Linux?
Pacerier
for -p [contraseña] debe estar cerca, por ejemplo: mysqldump -u tutorials -p'mypassword' -h 127.0.0.1 database_name > file_backup_database_name_.sql Advertencia: el uso de una contraseña en la interfaz de línea de comandos puede ser inseguro.
Marwan Salim
19

Para exportar PROCEDIMIENTOS, FUNCIONES Y DISPARADORES también, agregue el --routinesparámetro:

mysqldump -u YourUser -p YourDatabaseName --routines > wantedsqlfile.sql

arcadius
fuente
El cambio --routineshace la diferencia :) ¿Alguna pista sobre cómo exportar solo PROCEDIMIENTOS, FUNCIONES Y DISPARADORES? Para aquellos que se han olvidado del cambio y exportaron DB "puro" sin los "algoritmos" :)
AntonK
Por cierto, el interruptor --eventses necesario para volcar eventos del Programador de eventos, y los DISPARADORES siempre se exportan a menos que --skip-triggersse especifique (de acuerdo con 7.4.5.3 Volcado de programas almacenados )
AntonK
10

Dé este comando para exportar su base de datos, esto también incluirá la fecha

mysqldump -u[username] -p[userpassword] --databases yourdatabase | gzip > /home/pi/database_backup/database_`date '+%m-%d-%Y'`.sql.gz

(sin espacio después de -p)

Ossama
fuente
Tenga en cuenta que la especificación --databasesinsertará declaraciones como CREATE DATABASE XYZ;y USE XYZ;, lo que no es útil al importar el SQL a otro DB con otro nombre ...
AntonK
8

He instalado mi servidor wamp en D: unidad, por lo que debe ir a la siguiente ruta desde su línea de comando -> (y si ha instalado su wamp en c: unidad, simplemente reemplace d: wtih c: aquí)

D:\>cd wamp
D:\wamp>cd bin
D:\wamp\bin>cd mysql
D:\wamp\bin\mysql>cd mysql5.5.8 (whatever ur verserion will be displayed here use keyboard Tab button and select the currently working mysql version on your server if you have more than one mysql versions)
D:\wamp\bin\mysql\mysql5.5.8>cd bin
D:\wamp\bin\mysql\mysql5.5.8\bin>mysqldump -u root -p password db_name > "d:\backupfile.sql"

aquí root es usuario de mi contraseña de phpmyadmin es la contraseña de phpmyadmin, por lo que si no ha configurado ninguna contraseña para root, simplemente no escriba nada en ese lugar, db_name es la base de datos (para qué base de datos está tomando la copia de seguridad), backupfile.sql es el archivo en el que desea la copia de seguridad de su base de datos y también puede cambiar la ubicación del archivo de copia de seguridad (d: \ backupfile.sql) desde cualquier otro lugar de su computadora

Sachin
fuente
De todas las formas que encontré para hacer esto, esta respuesta es la única que funcionó para mí. Estoy usando MySQL versión 5.6, por lo que la ruta era ... \ MySQL \ MySQL Server 5.6 \ bin para el símbolo del sistema. Tendrá que usar su nombre de usuario y contraseña de administrador de MySQL, los especificados para una base de datos en particular no funcionarán. Gracias Sachin Incluso las instrucciones en el manual de MySQL para v.5.6 no funcionan. La sintaxis está incompleta allí.
Max West
¿Realmente funciona con el espacio entre -py password?
Davis
7
mysqldump -h [host] -p -u [user] [database name] > filename.sql

Ejemplo en localhost

mysqldump -h localhost -p -u root cookbook > cookbook.sql
Nanhe Kumar
fuente
4

El problema con todas estas soluciones (usando el > carácter redirector) es que escribe su volcado desde stdout, lo que puede romper la codificación de algunos caracteres de su base de datos.

Si tiene un problema de codificación de caracteres. Como :

ERROR 1064 (42000): tiene un error en su sintaxis SQL; consulte el manual que corresponde a la versión de su servidor MySQL para obtener la sintaxis correcta para usar cerca ...

entonces, DEBES usar-r opción para escribir el archivo.

MySQL

mysqldump -u user -pyour-password-without-space-between-letter-p-and-your-password --default-character-set=utf8 --host $HOST database-name -r dump.sql

Usando Docker

docker exec --rm -v $pwd:dump -it mysql:5:7 mysqldump -u user -pyour-password-without-space-between-letter-p-and-your-password --default-character-set=utf8 --host $HOST database-name -r dump/dump.sql

Nota: esto monta la ruta actual como volcado dentro de la instancia.

Encontramos la respuesta aquí

Por el contrario, no lo use <para importar su volcado a su base de datos, una vez más, sus caracteres que no sean utf8 no se pueden pasar; pero prefiero la opción de fuente.

mysql -u user -pYourPasswordYouNowKnowHow --default-character-set=utf8 your-database
mysql> SET names 'utf8'
mysql> SOURCE dump.sql
Colin Claverie
fuente
1

Sintaxis

(mysqldump.exe full path) -u (user name) -p (password) (database name) > (export database file full path)

Ejemplo

c:>d:\wamp\bin\mysql\mysql5.6.12\bin\mysqldump.exe -u root -p mydbname > d:\mydb.sql

donde d: \ wamp \ bin \ mysql \ mysql5.6.12 \ bin \ mysqldump.exe será su ruta real de mysqldump.exe, mydbname es el nombre de la base de datos que desea exportar y d: \ mydb.sql es la ruta donde desea almacenar la base de datos exportada.

Shailesh Prajapati
fuente
0

He usado el servidor wamp. Me probé

c:\wamp\bin\mysql\mysql5.5.8\bin\mysqldump -uroot -p db_name > c:\somefolder\filename.sql

root es mi nombre de usuario para mysql, y si tiene alguna contraseña, especifíquela con:

-p[yourpassword]

Espero que funcione.

Aswin k
fuente
--la contraseña debe usarse si también intenta escribir la contraseña
Erce
0

Para el sistema operativo Windows :

Cuando reciba el error 1064 mysql (42000) al intentar ejecutar el comando mysqldump , salga del terminal actual. Y ejecuta el comando mysqldump.

mysql>exit 
c:\xampp\mysql\bin>mysqldump -uroot -p --databases [database_name] > name_for_export_db.sql
npcoder
fuente
0

Estaba tratando de eliminar el db que se estaba ejecutando en la ventana acoplable y se me ocurrió el siguiente comando para lograr lo mismo:

docker exec <container_id/name>/ usr / bin / mysqldump -u <db_username>--password =<db_password> db_name > .sql

¡Espero que esto ayude!

Vikash Kumar Choudhary
fuente
-2

Puede usar este script para exportar o importar cualquier base de datos desde la terminal que se proporciona en este enlace: https://github.com/Ridhwanluthra/mysql_import_export_script/blob/master/mysql_import_export_script.sh

echo -e "Welcome to the import/export database utility\n"
echo -e "the default location of mysqldump file is: /opt/lampp/bin/mysqldump\n"
echo -e "the default location of mysql file is: /opt/lampp/bin/mysql\n"
read -p 'Would like you like to change the default location [y/n]: ' location_change
read -p "Please enter your username: " u_name
read -p 'Would you like to import or export a database: [import/export]: ' action
echo

mysqldump_location=/opt/lampp/bin/mysqldump
mysql_location=/opt/lampp/bin/mysql

if [ "$action" == "export" ]; then
    if [ "$location_change" == "y" ]; then
        read -p 'Give the location of mysqldump that you want to use: ' mysqldump_location
        echo
    else
        echo -e "Using default location of mysqldump\n"
    fi
    read -p 'Give the name of database in which you would like to export: ' db_name
    read -p 'Give the complete path of the .sql file in which you would like to export the database: ' sql_file
    $mysqldump_location -u $u_name -p $db_name > $sql_file
elif [ "$action" == "import" ]; then
    if [ "$location_change" == "y" ]; then
        read -p 'Give the location of mysql that you want to use: ' mysql_location
        echo
    else
        echo -e "Using default location of mysql\n"
    fi
    read -p 'Give the complete path of the .sql file you would like to import: ' sql_file
    read -p 'Give the name of database in which to import this file: ' db_name
    $mysql_location -u $u_name -p $db_name < $sql_file
else
    echo "please select a valid command"
fi
Ridhwan Luthra
fuente