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 root@"%" 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