MySQL: Come esportare e importare un file .sql dalla riga di comando?

Voglio esportare e importare un file .sql da e verso un database MySQL dalla riga di comando.

Esiste un comando per esportare il file .sql in MySQL? Quindi come posso importarlo?

Quando si esegue l’importazione, potrebbero esserci dei vincoli come abilitare / disabilitare il controllo delle chiavi esterne o esportare solo la struttura delle tabelle .

Possiamo impostare queste opzioni con mysqldump ?

Esportare

Se è un intero DB, allora:

 $ mysqldump -u [uname] -p[pass] db_name > db_backup.sql 

Se sono tutti i DB, allora:

 $ mysqldump -u [uname] -p[pass] --all-databases > all_db_backup.sql 

Se si tratta di tabelle specifiche all’interno di un DB, allora:

 $ mysqldump -u [uname] -p[pass] db_name table1 table2 > table_backup.sql 

Puoi persino arrivare fino alla compressione automatica dell’output utilizzando gzip (se il tuo DB è molto grande):

 $ mysqldump -u [uname] -p[pass] db_name | gzip > db_backup.sql.gz 

Se vuoi farlo da remoto e hai accesso al server in questione, allora il seguente potrebbe funzionare (presumendo che il server MySQL sia sulla porta 3306):

 $ mysqldump -P 3306 -h [ip_address] -u [uname] -p[pass] db_name > db_backup.sql 

Importare

Digitare il seguente comando per importare il file di dati SQL:

 $ mysql -u username -p -h localhost DATA-BASE-NAME < data.sql 

In questo esempio, importare il file "data.sql" nel database "blog" usando sat come nome utente:

 $ mysql -u sat -p -h localhost blog < data.sql 

Se si dispone di un server di database dedicato, sostituire il nome host del localhost con il nome del server o l'indirizzo IP effettivo come segue:

 $ mysql -u username -p -h 202.54.1.10 databasename < data.sql 

O usare il nome host come mysql.cyberciti.biz

 $ mysql -u username -p -h mysql.cyberciti.biz database-name < data.sql 

Se non sai che il nome del database o il nome del database è incluso in sql dump puoi provare qualcosa come segue:

 $ mysql -u username -p -h 202.54.1.10 < data.sql 

Consultare: http://dev.mysql.com/doc/refman/5.6/en/mysqldump.html

Se si desidera uno strumento GUI, è ansible utilizzare SQLyog

Digitare il seguente comando per importare il file di dati SQL:

 $ mysql -u username -p -h localhost DATA-BASE-NAME < data.sql 

In questo esempio, importare il file "data.sql" nel database "blog" usando vivek come username:

 $ mysql -u vivek -p -h localhost blog < data.sql 

Se si dispone di un server di database dedicato, sostituire il nome host del localhost con il nome del server o l'indirizzo IP effettivo come segue:

 $ mysql -u username -p -h 202.54.1.10 databasename < data.sql 

Per esportare un database, utilizzare quanto segue:

 mysqldump -u username -p databasename > filename.sql 

Nota i simboli < e > in ciascun caso.

Se stai già utilizzando la shell SQL, puoi utilizzare il comando source per importare i dati:

 use databasename; source data.sql; 

Provare

 mysqldump databaseExample > file.sql 

mysqldump non eseguirà il dump degli eventi, dei trigger e delle routine del database a meno che non venga specificato esplicitamente durante il dumping di singoli database;

 mysqldump -uuser -p db_name --events --triggers --routines > db_name.sql 

Bene, puoi usare sotto il comando per esportare,

mysqldump –database –user = root –password your_db_name> export_into_db.sql

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

Ora accedi a mysql usando il comando,

mysql -u [nome utente] -p

quindi utilizzare il comando “source” con il percorso del file.

Puoi trovare ulteriori informazioni su: Import Export MySQL DB

Godere 🙂

Scarica un intero database in un file:

 mysqldump -u USERNAME -p password DATABASENAME > FILENAME.sql 

dal momento che non ho abbastanza reputazione per commentare dopo il post più alto, quindi aggiungo qui.

usa ‘|’ su piattaforma Linux per risparmiare spazio su disco.

thx @Hariboo, aggiungere parametri eventi / trigger / routints

 mysqldump -x -u [uname] -p[pass] -C --databases db_name --events --triggers --routines | sed -e 's/DEFINER[ ]*=[ ]*[^*]*\*/\*/ ' | awk '{ if (index($0,"GTID_PURGED")) { getline; while (length($0) > 0) { getline; } } else { print $0 } }' | grep -iv 'set @@' | trickle -u 10240 mysql -u username -p -h localhost DATA-BASE-NAME 

alcuni problemi / suggerimenti:

Errore: …… non esiste quando si usano LOCK TABLES

 # --lock-all-tables,-x , this parameter is to keep data consistency because some transaction may still be working like schedule. # also you need check and confirm: grant all privileges on *.* to [email protected]"%" identified by "Passwd"; 

ERRORE 2006 (HY000) alla riga 866: MySQL Server è andato via mysqldump: Got errno 32 su write

 # set this values big enough on destination mysql server, like: max_allowed_packet=1024*1024*20 # use compress parameter '-C' # use trickle to limit network bandwidth while write data to destination server 

ERRORE 1419 (HY000) alla riga 32730: Non si dispone del privilegio SUPER e la registrazione binaria è abilitata (si potrebbe voler usare la variabile log_bin_trust_function_creators meno sicura)

 # set SET GLOBAL log_bin_trust_function_creators = 1; # or use super user import data 

ERRORE 1227 (42000) alla riga 138: Accesso negato; hai bisogno (almeno uno dei) dei privilegi SUPER per questa operazione mysqldump: Hai errno 32 su scrittura

 # add sed/awk to avoid some privilege issues 

spero che questo aiuto!

È ansible 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