Bagaimana cara mengekspor database mysql menggunakan Command Prompt?

342

Saya memiliki database yang cukup besar sehingga saya ingin mengekspornya menggunakan Command Prompt tetapi saya tidak tahu caranya.

Saya menggunakan WAMP.

Starx
sumber
6
DOS? apakah Anda menggunakan Windows 98? Atau maksud Anda command prompt?
jle
Dari Anda menggunakan wamp, Anda juga harus memiliki phpmyadmin, dengan opsi ekspor
Lars C. Magnusson

Jawaban:

536

Pertama periksa apakah baris perintah Anda mengenali perintah mysql. Jika tidak pergi ke perintah & ketik:

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

Kemudian gunakan perintah ini untuk mengekspor database Anda:

mysqldump -u YourUser -p YourDatabaseName > wantedsqlfile.sql

Anda kemudian akan diminta kata sandi basis data .

Ini mengekspor database ke jalur Anda saat ini, saat menjalankan perintah ini

Catatan: Berikut adalah beberapa petunjuk terperinci mengenai impor dan ekspor

Starx
sumber
7
itu memberikan kesalahan "mysqldump: Mendapat kesalahan: 1049: Basis data tidak dikenal 'kata sandi' ketika memilih database" tetapi berfungsi ketika saya menghapus "-p userpassword"
Ateş Danış
11
@ AteşDanış Tidak ada ruang antara -pdan thepassword.
Charles Wood
44
Anda hanya harus menggunakan -pdan kemudian akan diminta kata sandi. Dengan cara ini Anda menghindari kata sandi Anda disimpan misalnya dalam.bash_history
nuala
7
Bagi saya, perintah ini berfungsi: mysqldump -u YourUser -p YourDatabaseName> wantedsqlfile.sql (Ketikkan perintah, tekan enter, lalu kata sandi akan dimasukkan).
shasi kanth
3
Menentukan kata sandi pada baris perintah harus dianggap tidak aman.
wappy
112

Cukup gunakan perintah berikut,

Untuk ekspor:

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

Untuk Impor:

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

Catatan: Tidak ada ruang antara kata kunci '-p' dan kata sandi Anda.

Srinivasan.S
sumber
1
Saya pikir Anda melewatkan fakta bahwa dia menggunakan WAMP - Windows ... gunzip / gzip tidak dibundel dengan Windows. Mungkin saja menjalankan perintah Anda setelah menginstal beberapa hal, tetapi saya pikir Anda telah melewatkan fakta itu.
Rolf
2
Menentukan gzip -9membuat file yang dihasilkan sedikit lebih kecil, karena kompresi maksimum digunakan.
AntonK
39

Pertama-tama buka command prompt kemudian buka direktori bin di cmd (saya harap Anda sadar dengan perintah cmd ) buka direktori bin folder MySql Anda di file program WAMP .

jalankan perintah

mysqldump -u db_username -p database_name > path_where_to_save_sql_file

tekan enter sistem akan mengekspor database tertentu dan membuat file sql ke lokasi yang diberikan.

Saya harap Anda mendapatkannya :) jika Anda memiliki pertanyaan, silakan beri tahu saya.

Mitesh vaghela
sumber
Teman saya, saya sudah mencoba menjelaskan prosesnya sedikit. alih-alih memberikan perintah langsung
Mitesh vaghela
38

Anda dapat menggunakan perintah di bawah ini,

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

dan file yang dihasilkan akan tersedia di direktori yang sama di mana Anda menjalankan perintah ini.

Anda dapat menemukan lebih banyak di referensi resmi untuk mysqldump: Impor Ekspor MySQL DB

Catatan : gunakan --databasesalih-alih --databasekarena yang terakhir tidak lagi didukung.

Nikmati :)

Umesh Patil
sumber
4
Bagi mereka yang mendapatkan kesalahan seperti "Akses ditolak saat menggunakan LOCK TABLES", Anda harus menambahkan parameter "--single-transaction" ke perintah.
Skyrpex
Saya mendapat kesalahan mysqldump: [ERROR] unknown option '--database'tetapi tidak mengikutinya --database.
hejdav
@ Skyrpex Terima kasih, itu solusi yang saya cari.
Martijn
22

Pergi ke command prompt di jalur ini,

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

Kemudian berikan perintah ini untuk mengekspor database Anda ( tanpa spasi setelah -p )

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

pengguna2484830
sumber
21

Temukan instance mysql Anda dengan:

which mysql

Jika ini benar maka ekspor dengan yang berikut ini (jika tidak, navigasikan ke instance mysql di folder mamp di bin):

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

Dan jika Anda ingin mengancingkannya di waktu yang sama:

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

Anda kemudian dapat memindahkan file ini antara server dengan:

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

(di mana xxx.xxx.xxx.xxx adalah alamat IP server)

Dan kemudian impor dengan:

gunzip filename.sql.gz | mysql -u [user] -p [password] [database]
Pembuka
sumber
4
Sekali lagi, W AMP => Windows. yang merupakan perintah Linux. gunzip / gzip tidak dibundel dengan Windows - dan mungkin tidak tersedia. scp ... Anda mengerti intinya.
Rolf
Jawaban dari Opentuned sangat bagus . Satu hal kecil adalah menghapus aktual passworddari baris perintah: mysqldump -u [nama pengguna] -p [dbname]> filename.sql Ini mencegah orang mencari histori kata sandi Anda.
Vincent
1
@Opentuned, Ada apa dengan jimat linux?
Pacerier
untuk -p [pasword] harus dekat misalnya: mysqldump -u tutorials -p'mypassword' -h 127.0.0.1 database_name > file_backup_database_name_.sql Peringatan: Menggunakan kata sandi pada antarmuka baris perintah dapat menjadi tidak aman.
Marwan Salim
19

Untuk mengekspor PROSEDUR, FUNGSI & PEMICU juga, tambahkan --routinesparameter:

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

arcadius
sumber
Peralihan --routinesmembuat perbedaan :) Ada petunjuk bagaimana cara mengekspor hanya PROSEDUR, FUNGSI & PEMICU? Bagi mereka yang lupa tentang saklar dan mengekspor "DB murni" tanpa "algoritma" :)
AntonK
BTW sakelar --eventsdiperlukan untuk membuang acara Penjadwal Acara, dan TRIGGER selalu diekspor kecuali --skip-triggersditentukan (berdasarkan 7.4.5.3 Program Tersimpan Dumping )
AntonK
10

Berikan perintah ini untuk mengekspor database Anda, ini akan termasuk tanggal juga

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

(tanpa spasi setelah -p)

Ossama
sumber
Perhatikan, menetapkan bahwa --databasesakan memasukkan pernyataan sebagai CREATE DATABASE XYZ;dan USE XYZ;, yang tidak berguna ketika mengimpor SQL ke DB lain dengan nama lain ...
AntonK
8

Saya telah menginstal server wamp di drive D: jadi Anda harus pergi ke jalur berikut dari baris perintah ur -> (dan jika Anda telah menginstal server w di drive c: drive maka ganti saja d: wtih c: di sini)

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"

di sini root adalah pengguna kata sandi phpmyadmin saya adalah kata sandi untuk phpmyadmin jadi jika Anda belum menetapkan kata sandi untuk root hanya ketik apa pun di tempat itu, db_name adalah basis data (untuk database mana Anda mengambil cadangan), backupfile.sql adalah file yang Anda inginkan cadangan dari database Anda dan Anda juga dapat mengubah lokasi file cadangan (d: \ backupfile.sql) dari ke tempat lain di komputer Anda

Sachin
sumber
Dari semua cara yang saya temukan untuk melakukan ini, jawaban ini adalah satu-satunya yang bekerja untuk saya. Saya menggunakan MySQL versi 5.6, jadi pathnya adalah ... \ MySQL \ MySQL Server 5.6 \ bin untuk command prompt. Anda harus menggunakan nama pengguna dan kata sandi admin MySQL Anda, yang ditentukan untuk basis data tertentu tidak akan berfungsi. Sachin terima kasih. Bahkan petunjuk dalam manual MySQL untuk v.5.6 tidak berfungsi. Sintaksnya tidak lengkap di sana.
Max West
Apakah ini benar-benar berfungsi dengan ruang antara -pdan password?
Davis
7
mysqldump -h [host] -p -u [user] [database name] > filename.sql

Contoh di localhost

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

Masalah dengan semua solusi ini (menggunakan >karakter redirector) adalah Anda menulis dump Anda dari stdout yang dapat merusak pengkodean beberapa karakter dari database Anda.

Jika Anda memiliki masalah penyandian karakter. Seperti :

GALAT 1064 (42000): Anda memiliki kesalahan dalam sintaks SQL Anda; periksa manual yang sesuai dengan versi server MySQL Anda untuk sintaks yang tepat untuk digunakan di dekat ...

maka, Anda HARUS menggunakan -ropsi untuk menulis 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

Menggunakan 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

Catatan: ini memasang jalur saat ini sebagai dump di dalam instance.

Kami menemukan jawabannya di sini

Sebaliknya, jangan gunakan <untuk mengimpor dump Anda ke basis data Anda, sekali lagi, karakter non-utf8 Anda mungkin tidak diteruskan; tetapi lebih suka opsi sumber.

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

Sintaksis

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

Contoh

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

di mana d: \ wamp \ bin \ mysql \ mysql5.6.12 \ bin \ mysqldump.exe akan menjadi jalur mysqldump.exe Anda yang sebenarnya, mydbname adalah nama basis data yang ingin Anda ekspor dan d: \ mydb.sql adalah jalur tempat Anda ingin menyimpan basis data yang diekspor.

Shailesh Prajapati
sumber
0

Saya telah menggunakan server wamp. Saya mencoba

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

root adalah nama pengguna saya untuk mysql, dan jika Anda memiliki kata sandi, tentukan dengan:

-p[yourpassword]

Semoga berhasil.

Aswin k
sumber
--password perlu digunakan jika Anda benar-benar mengetik kata sandi juga
Erce
0

Untuk OS windows :

Ketika Anda mendapatkan kesalahan 1064 mysql (42000) saat mencoba menjalankan perintah mysqldump , keluar dari terminal saat ini. Dan jalankan perintah mysqldump.

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

Saya mencoba untuk mengambil dump dari db yang berjalan pada buruh pelabuhan dan datang dengan perintah di bawah ini untuk mencapai yang sama:

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

Semoga ini membantu!

Vikash Kumar Choudhary
sumber
-2

Anda dapat menggunakan skrip ini untuk mengekspor atau mengimpor basis data dari terminal yang diberikan di tautan ini: 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
sumber