Come esportare un database mysql usando il prompt dei comandi?


342

Ho un database abbastanza grande, quindi voglio esportarlo usando il Prompt dei comandi, ma non so come farlo.

Sto usando WAMP.


6
DOS? stai usando Windows 98? O intendi il prompt dei comandi?
jle,

Se usi wamp, dovresti anche avere phpmyadmin, con l'opzione di esportazione
Lars C. Magnusson,

Risposte:


537

Prima controlla se la tua riga di comando riconosce il comando mysql. Altrimenti vai al comando e digita:

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

Quindi utilizzare questo comando per esportare il database:

mysqldump -u YourUser -p YourDatabaseName > wantedsqlfile.sql

Verrà quindi richiesta la password del database .

In questo modo il database viene esportato nel percorso in cui ci si trova attualmente, durante l'esecuzione di questo comando

Nota: ecco alcune istruzioni dettagliate relative sia all'importazione che all'esportazione


7
dà l'errore "mysqldump: errore ottenuto: 1049: database sconosciuto" thepassword "quando si seleziona il database" ma ha funzionato quando ho eliminato "-p userpassword"
Ateş Danış

11
@ AteşDanış Non c'è spazio tra -pe thepassword.
Charles Wood,

44
Dovresti semplicemente usare -pe quindi ti verrà richiesta la password. In questo modo si evita di salvare la password, ad es. A.bash_history
nuala

7
Per me, questo comando funziona: mysqldump -u YourUser -p YourDatabaseName> wantedsqlfile.sql (Digita il comando, premi invio e la password verrebbe inserita).
Shasi kanth,

3
La specifica di una password nella riga di comando deve essere considerata non sicura.
Wappy,

112

Usa semplicemente il seguente comando,

Per l'esportazione:

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

Per importazione:

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

Nota: non c'è spazio tra la parola chiave '-p' e la password.


1
Penso che ti sia perso il fatto che sta usando WAMP - Windows ... gunzip / gzip non sono in bundle con Windows. Potrebbe essere possibile eseguire il comando dopo aver installato alcune cose, ma penso che ti sia perso questo fatto.
Rolf,

2
La specifica gzip -9rende il file risultante un po 'più piccolo, poiché viene utilizzata la compressione massima.
AntonK

39

Prima di tutto apri il prompt dei comandi quindi apri la directory bin in cmd (spero che tu sia a conoscenza dei comandi cmd ) vai alla directory bin della tua cartella MySql nei file di programma WAMP .

esegui comando

mysqldump -u db_username -p database_name > path_where_to_save_sql_file

premere invio per esportare un determinato database e creare un file sql nella posizione specificata.

spero che tu l'abbia :) se hai qualche domanda per favore fatemelo sapere.


Amico mio, ho provato a spiegare un po 'il processo. piuttosto che dare un comando diretto
Mitesh vaghela il

38

Bene, puoi usare il comando seguente,

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

e il file generato sarà disponibile nella stessa directory in cui era stato eseguito questo comando.

Puoi trovare ulteriori informazioni sul riferimento ufficiale per mysqldump: Import Export MySQL DB

Nota : utilizzare --databasesinvece di --databasepoiché l'ultimo non è più supportato.

Godere :)


4
Per coloro che ottengono un errore come "Accesso negato quando si usano le tabelle di blocco", è necessario aggiungere il parametro "--single-transazione" al comando.
Skyrpex,

Ho ricevuto un errore, mysqldump: [ERROR] unknown option '--database'ma l'esclusione --databaseha funzionato.
hejdav,

@Skyrpex Grazie, questa era la soluzione che stavo cercando.
Martijn,

22

Vai al prompt dei comandi in questo percorso,

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

Quindi dare questo comando per esportare il database ( nessuno spazio dopo -p )

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


21

Individua la tua istanza mysql con:

which mysql

Se questo è corretto, esporta con il seguente (altrimenti vai all'istanza mysql nella tua cartella mamp nel cestino):

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

E se desideri comprimerlo contemporaneamente:

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

È quindi possibile spostare questo file tra i server con:

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

(dove xxx.xxx.xxx.xxx è l'indirizzo IP del server)

E poi importalo con:

gunzip filename.sql.gz | mysql -u [user] -p [password] [database]

4
Anche in questo caso, W AMP => di Windows. che è un comando Linux. gunzip / gzip non sono in bundle con Windows e potrebbero non essere disponibili. scp ... ottieni il punto.
Rolf,

La risposta di Opentuned è fantastica . Una piccola cosa è rimuovere l'effettivo passworddalla riga di comando: mysqldump -u [username] -p [dbname]> nomefile.sql Questo impedisce alle persone di cercare la tua cronologia per la password.
Vincent,

1
@Opentuned, Cosa c'è con il feticcio di Linux?
Pacerier,

per -p [pasword] deve essere vicino, ad esempio: mysqldump -u tutorials -p'mypassword' -h 127.0.0.1 database_name > file_backup_database_name_.sql Avviso: l'uso di una password nell'interfaccia della riga di comando può essere insicuro.
Marwan Salim,

19

Per esportare PROCEDURE, FUNZIONI e TRIGGER, aggiungi il --routinesparametro:

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


L'interruttore --routinesfa la differenza :) Qualche suggerimento su come esportare solo PROCEDURE, FUNZIONI e TRIGGER? Per coloro che hanno dimenticato il passaggio ed esportato DB "puro" senza "algoritmi" :)
AntonK

A proposito, lo switch --eventsè necessario per scaricare gli eventi di Event Scheduler e i TRIGGER vengono sempre esportati, a meno che non --skip-triggerssia specificato (secondo 7.4.5.3 Dumping Stored Programs )
AntonK

10

Dai questo comando per esportare il tuo database, questo includerà anche la data

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

(nessuno spazio dopo -p)


Nota che specificando --databasesinserirai istruzioni come CREATE DATABASE XYZ;e USE XYZ;, il che non è utile quando si importa l'SQL in un altro DB con un altro nome ...
AntonK

8

Ho installato il mio server Wamp in D: drive, quindi devi seguire il seguente percorso dalla tua riga di comando -> (e se hai installato il tuo wamp in c: drive, sostituisci semplicemente d: con c: qui)

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"

qui root è l'utente della mia password phpmyadmin è la password per phpmyadmin, quindi se non hai impostato alcuna password per root, non devi digitare nulla in quel posto, db_name è il database (per il quale il database sta eseguendo il backup), backupfile.sql è il file in cui desideri il tuo backup del tuo database e puoi anche cambiare la posizione del file di backup (d: \ backupfile.sql) da qualsiasi altra posizione sul tuo computer


Di tutti i modi in cui ho scoperto di farlo, questa risposta è l'unica che ha funzionato per me. Sto usando MySQL versione 5.6, quindi il percorso era ... \ MySQL \ MySQL Server 5.6 \ bin per il prompt dei comandi. Dovrai utilizzare il nome utente e la password dell'amministratore di MySQL, quelli specificati per un determinato database non funzioneranno. Grazie Sachin. Anche le istruzioni nel manuale MySQL per v.5.6 non funzionano. La sintassi è incompleta lì.
Max West,

Funziona davvero con lo spazio tra -pe password?
Davis,

7
mysqldump -h [host] -p -u [user] [database name] > filename.sql

Esempio in localhost

mysqldump -h localhost -p -u root cookbook > cookbook.sql

4

Il problema con tutte queste soluzioni (utilizzando il >carattere redirector) è che si scrive il dump da stdout che potrebbe interrompere la codifica di alcuni caratteri del database.

Se hai un problema di codifica dei caratteri. Ad esempio :

ERRORE 1064 (42000): si è verificato un errore nella sintassi SQL; controlla il manuale corrispondente alla versione del tuo server MySQL per la sintassi corretta da usare vicino ...

quindi, DEVI utilizzare l' -ropzione per scrivere il file.

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

Utilizzando 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: questo monta il percorso corrente come dump all'interno dell'istanza.

Abbiamo trovato la risposta qui

Al contrario, non utilizzare <per importare il dump nel database, di nuovo, i caratteri non utf8 potrebbero non essere passati; ma preferisci l'opzione sorgente.

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

1

Sintassi

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

Esempio

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

dove d: \ wamp \ bin \ mysql \ mysql5.6.12 \ bin \ mysqldump.exe sarà il tuo vero percorso mysqldump.exe, mydbname è il nome del database che vuoi esportare e d: \ mydb.sql è il percorso dove si desidera archiviare il database esportato.


0

Ho usato il server Wamp. Ci ho provato

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

root è il mio nome utente per mysql e se si dispone di una password, specificarlo con:

-p[yourpassword]

Spero funzioni.


--password deve essere utilizzato se si sta tentando di digitare anche la password
Erce

0

Per sistema operativo Windows :

Quando viene visualizzato l'errore 1064 mysql (42000) durante il tentativo di eseguire il comando mysqldump , uscire dal terminale corrente. Ed esegui il comando mysqldump.

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

0

Stavo cercando di prendere il dump del db che era in esecuzione sulla finestra mobile e ho trovato il comando seguente per ottenere lo stesso:

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

Spero che questo ti aiuti!


-2

È possibile utilizzare questo script per esportare o importare qualsiasi database dal terminale fornito a questo link: 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
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.