MySQLdump: muat turun, bekerja dengan mysqldump, contoh. Panduan Rujukan MySQL

Idea artikel adalah untuk mencipta panduan berkualiti tinggi untuk memasang dan bekerja dengan program mysqldump. Menggunakan banyak contoh dan mengumpul segala-galanya pilihan yang berguna dan parameter untuk bekerja dengan utiliti ini. Sukar untuk memuatkan segala-galanya ke dalam satu artikel, jadi semuanya akan menjadi pendek dan tepat. Jika ada yang salah faham, sila komen artikel tersebut.

Bahagian:

Pemasanganmysqldump:

Apakah mysqldump?

MySQLdump- Ini aplikasi pelayan, yang membolehkan anda membuat sandaran (selepas ini dirujuk sebagai dump) pangkalan data dan menyimpannya dalam fail berasingan. Pada masa yang sama, anda boleh membuat tetapan pembuangan yang fleksibel: beberapa atau semua pangkalan data, mengarkib dalam gzip, menambah kunci, perintah lepas dan banyak lagi. Juga boleh import terbalik salinan sandaran DB. Boleh dilakukan dengan menggunakan PHP, tetapi ini tidak boleh diterima untuk projek besar yang mempunyai berat data yang banyak.

Program ini sangat berguna dalam mengeksport dan mengimport data daripada pangkalan data. Ia boleh dipasang sebagai standard pada pengehosan anda (lebih tepat, pelayan mysql). Tetapi untuk mengasah kemahiran anda dalam bekerja dengan mysqldump dan mempelajari cara memasangnya, anda boleh memasangnya di denwer. Itulah yang akan kita lakukan sekarang.

Muat turun mysqldump

Anda sentiasa boleh memuat turun program mysqldump di tapak web kami, dan memuat turun aplikasi adalah percuma sepenuhnya. Muat turun mysqldump dari pautan terus di bawah.

Bagaimana untuk memasang mysqldump?

Kami akan memasang di tempatan pelayan Denwer. Memasang aplikasi adalah mudah dan mudah, untuk melakukan ini, ikut arahan dan tangkapan skrin yang disediakan di bawah.

1. Salin fail mysqldump.exe ke folder Denver:

D:\WebServers\usr\local\mysql5\bin\
Dalam kes ini, anda mungkin mempunyai nama yang sedikit berbeza untuk folder mysql5, contohnya mysql-5.1 atau diubah suai sedikit. Oleh itu, untuk lebih jelas, di bawah ialah tangkapan skrin:

2. Lancarkan Denver

Pasti anda sendiri tahu cara melancarkan Denwer.


3. Lancarkan konsol:

Mula->Lari->cmd.exe atau pada Windows 7: Mula->Cari->Entercmd.exe->Masuk, seperti yang ditunjukkan dalam tangkapan skrin:

4. Ujian:

Menggunakan arahan dalam konsol, pergi ke cakera maya Denver (saya ada W:\) dan ke folder dengan aplikasi mysqldump. Untuk mengesahkan pelaksanaan arahan, tekan Enter.

Masukkan arahan:

W:- pergi ke cakera maya Denver

CDusr\tempatan\mysql5\tong sampah– pergi ke folder dengan aplikasi

mysqldump -uroot your_db_name>file_name.sql– menguji, membuang pangkalan data sewenang-wenangnya ke dalam fail, yang akan disimpan dalam folder bin.

Pemasangan saya berjaya, saya harap pemasangan anda juga. Dalam folder bin kita dapati fail sandaran pangkalan data. Untuk mengetahui cara menggunakan program dengan lebih meluas, baca bahagian artikel berikut.

Bermula: eksport dan import pangkalan data

Eksport pangkalan data

Kami telah memasang aplikasi dan mempelajari cara menggunakan konsol. Kami telah pun melakukan pembuangan ujian. Sekarang mari kita lakukan pembuangan pangkalan data mudah ke dalam direktori yang kita perlukan. Untuk melakukan ini, saya mencipta pangkalan data yang digunakan sebelum ini dipanggil "ujian". Ia terletak pada pelayan denwer tempatan. Di bawah disediakan arahan langkah demi langkah konsol untuk membuang pangkalan data ujian ke dalam folder yang dikehendaki dan fail yang dikehendaki.

W: cdusr\local\mysql5\bin mysqldump -uroot test>D:\test\easydump.sql

Tangkapan skrin di bawah menunjukkan fail dump dalam folder ujian:

Eksport selesai dengan jayanya. Sekarang mari cuba mengimport fail ini kembali ke pelayan kami.

Import Pangkalan Data

Untuk mengimport pangkalan data, kosongkan pangkalan data dalam phpmyadmin dan gunakan arahan berikut dalam cmd.exe:

Ujian Mysql -uroot

Nota penting: jika semasa mengeksport kami gunakan mysqldump..., maka apabila mengimport anda perlu memulakan arahan dengan mysql. Contoh ini ialah penggunaan asas aplikasi mysqldump untuk membuat sandaran pangkalan data. Anda akan menemui lebih banyak arahan dan contoh dalam bahagian dan artikel.

Contoh MySQLdump

Di bawah adalah contoh yang paling biasa digunakan untuk menggunakan mysqldump. Dengan mana anda bukan sahaja boleh membuat sandaran, tetapi juga menambah beberapa parameter Salinan simpanan: pemampatan menggunakan gzip, menambah tarikh sandaran, membuang hanya beberapa jadual atau struktur pangkalan data, menggunakan tetapan fleksibel. Pilihan ini membolehkan anda meningkatkan kelajuan pelaksanaan dump dan menggunakan ruang cakera dengan berhati-hati.

Mencipta tempat pembuangan sampah

mysqldump –uUSER -h82.82.82.82 -pPASSWORD DATABASE > /path/to/file/dump.sql

-u atau --pengguna=...- Nama pengguna

-h atau --tuan rumah=... - hos jauh(untuk localhost anda boleh meninggalkan parameter ini)

-hlm atau --kata laluan- minta kata laluan

pangkalan data- nama pangkalan data yang dieksport

/path/to/file/dump.sql- laluan dan fail untuk dump

Kami membuang beberapa pangkalan data, untuk ini kami menggunakan atribut --databases atau ringkasnya –B, lihat contoh di bawah:

Mysqldump -uroot -h82.82.82.82 -p -B pangkalan data1 pangkalan data2 pangkalan data3 > pangkalan data.sql

Jika anda ingin membuat pembuangan semua pangkalan data, anda mesti menggunakan parameter –all-databases atau –A dalam bentuk yang dipendekkan, lihat contoh:

Mysqldump -uroot -h82.82.82.82 -p -A > all-databases.sql

Mewujudkan struktur pangkalan data tanpa data

Untuk melakukan ini, anda perlu menggunakan parameter --no-data seperti yang ditunjukkan dalam contoh di bawah:

Mysqldump --no-data - uUSER -pPASSWORD DATABASE > /path/to/file/schema.sql

Buat longgokan hanya satu atau beberapa jadual pangkalan data

mysqldump -uUSER -pPASSWORD DATABASE JADUAL1 JADUAL2 JADUAL3 > dump.sql

Buat tempat pembuangan dan arkibkannyagzip

mysqldump -u PENGGUNA -pPASSWORD PANGKALAN DATA | gzip > /path/to/outputfile.sql.gz

Buat dump dengan tarikh dalam nama fail

mysqldump -uUSER -pPASSWORD DATABASE | gzip > `tarikh +dump.sql.%Y%m%d.%H%M%S.gz`

Menggunakan atribut tambahan

mysqldump -Q -c -e -uUSER -pPASSWORD DATABASE > /path/to/file/dump.sql

Seperti yang dinyatakan sebelum ini, atribut ini mengurangkan saiz fail akhir dan mempercepatkan proses sandaran. Lebih tepat:

-Q membungkus nama dalam petikan belakang

-c melakukan sisipan penuh, termasuk nama lajur

-e membuat sisipan lanjutan.

Siaran ini mengandungi arahan yang paling biasa digunakan untuk mencipta atau menggunakan sandaran pangkalan data data MySQL.

Nah, saya hanya bosan dengan sentiasa mencari kunci apabila saya "tiba-tiba" memerlukannya.

Sedikit teori...

MySQLDUMP ialah alat yang membolehkan anda membuat salinan sandaran pangkalan data MySQL. Hasilnya, kami mendapat fail .sql dengan dump pangkalan data. Fail ini mengandungi Kod Sql dalam bentuk teks, iaitu. anda sentiasa boleh membukanya dengan editor teks untuk dilihat, diedit, dll...
Anda boleh memulihkan pembuangan sedemikian menggunakan utiliti mysql melalui STDIN.

Dengan cara ini, terdapat juga utiliti seperti MySqlHotCopy, yang paling sesuai digunakan untuk membuat sandaran panas, kerana ia mengunci pangkalan data dan menyalin fail pangkalan data ke Tempat yang betul. Tetapi perkara ini hanya akan berfungsi jika ia dijalankan pada pelayan itu sendiri, ia hanya berfungsi dengan jadual MyISAM dan Arkib dan lebih sesuai untuk pangkalan data yang besar.
Anda boleh memulihkan data dengan menyalin fail yang disimpan ke direktori data MySQL.

Tetapi, secara umum, ini bukan tentang dia... mungkin saya akan menulis tentang "salinan panas" dalam artikel lain...

Mencipta Sandaran Pangkalan Data

Mari kita mulakan dengan arahan yang paling biasa untuk membuang tapak site.ru ke dalam fail site.ru:

Mysqldump -uroot -h10.30.30.10 -p site_ru > site_ru.sql

    Lebih lanjut mengenai kunci:
  • -u(--user=...) ialah nama pengguna pangkalan data;
  • -h(—host=…) ialah hos di mana pelayan itu sendiri berada. Jika pelayan adalah setempat, maka parameter ini sama ada tidak boleh digunakan atau anda boleh memasukkan localhost di sana. Juga perlu diingat bahawa ip pelayan selepas kunci mesti ditulis tanpa ruang;
  • -hlm(--password=...) ialah kata laluan pengguna. Jika kunci ini tidak digunakan, maka penyambungan ke pangkalan data akan dapat dilakukan jika tiada kata laluan. Juga, tiada siapa yang melarang memasukkan kata laluan ke dalam arahan, dan tidak sepatutnya ada ruang selepas kunci (contohnya: -p1234567890, di mana 1234567890 ialah kata laluan);
  • site_ru ini adalah nama pangkalan data pada pelayan MySql;
  • site_ru.sql ini ialah fail dump.

Untuk membuat salinan sandaran beberapa pangkalan data, anda boleh menggunakan kunci -B dan tentukan beberapa pangkalan data, berikut adalah contoh:

Mysqldump -uroot -h10.30.30.10 -p site_ru site2_ru site3_ru > sites.sql

Jika keadaan tidak memberi anda masa untuk berfikir, dan anda perlu membuat salinan sandaran semua pangkalan data, maka dalam situasi ini anda boleh menggunakan kunci --semua-pangkalan data, berikut ialah contoh:

Mysqldump -uroot -h10.30.30.10 -p -A > all-db.sql

By the way, ada nuansa.

Jika anda membuat sandaran pangkalan data semasa berjalan, dan lebih-lebih lagi, pelayan yang digunakan secara aktif, maka anda berisiko mendapat pelanggaran sambungan logik. Terdapat beberapa cara untuk mengelakkan perkara ini.

Cara pertama ialah mengunci meja, i.e. anda boleh menggunakan parameter --lock-tables, berikut ialah contoh:

Mysqldump -uroot -h10.30.30.10 -p --lock-tables site_ru > site_ru.sql

Tetapi pada masa membuat sandaran, permintaan pelanggan akan digantung... dan oleh itu mungkin terdapat tamat masa.

Cara kedua ialah menggunakan suis --flush-log semasa membuat sandaran. Kunci ini akan ditutup log lama tindakan dan akan mencipta yang baru. Jika seseorang menulis sesuatu semasa membuat salinan, ini akan dicerminkan pada permulaan log dan kemungkinan untuk memindahkan perubahan ini ke pangkalan data. Seterusnya, untuk memastikan, selepas melengkapkan sandaran, anda perlu menjalankan perintah mysqladmin -flush-logs dan meninggalkan salinan log binari kedua.

Memulihkan sandaran pangkalan data

Di sini utiliti "mysql" sudah pun memerintah. Berikut ialah contoh:

Mysql -uroot -h10.30.30.10 -p site_ru< site_ru.sql

Cara lain, lebih bertele-tele:

Mysql -uroot -p Masukkan kata laluan: Selamat datang ke monitor MySQL. Perintah berakhir dengan ; atau\g. Id sambungan MySQL anda ialah 35 Versi pelayan: 5.6.35-1+deb.sury.org~xenial+0.1 (Ubuntu) Hak Cipta (c) 2000, 2016, Oracle dan/atau ahli gabungannya. Hak cipta terpelihara. Oracle ialah tanda dagangan berdaftar Oracle Corporation dan/atau ahli gabungannya. Nama lain mungkin merupakan tanda dagangan pemilik masing-masing. Taip "help;" atau "\h" untuk mendapatkan bantuan. Taip "\c" untuk mengosongkan pernyataan input semasa. mysql> gunakan site_ru; mysql> source site_ru.sql;

Nah, jika pangkalan data anda disimpan dalam arkib gz, maka anda boleh menggabungkan arahan mysql dan zcat seperti ini:

Zcat site_ru.sql.gz | mysql -uroot -h10.30.30.10 -p site_ru

Lebih banyak pilihan untuk menggunakan mysqldump

Sebagai contoh, kita memerlukan pangkalan data dalam zon dev, kotak pasir, boleh dikatakan, dan saiz pangkalan data utama adalah sangat besar. Anda boleh menggunakan kekunci -where="true limit 150", yang kami akan menyatakan secara eksplisit sampel data tidak lebih daripada 150 rekod. Berikut ialah contoh:

Mysqldump -uroot -h10.30.30.10 -p --where="had benar 150" site_ru > site_ru.sql

Jika kita hanya memerlukan struktur tanpa data, maka kita boleh menggunakan suis --no-data, berikut ialah contoh

Mysqldump -uroot -h10.30.30.10 -p --no-data site_ru > site_ru.sql

Jika kita memerlukan salinan hanya satu jadual, maka berikut ialah arahan contoh:

Mysqldump -u root -p testdb tablename > testdb_table_backup.sql

Jika kita memerlukan salinan pencetus, prosedur dan peristiwa (penjadual terbina dalam), maka berikut ialah contoh:

Mysqldump --no-create-info --no-data --triggers --rutin --events -uroot -p site_ru | gzip > ~/database.sql.gz

Anda juga boleh membuat pembuangan pangkalan data yang diarkibkan dengan segera. Anda boleh melakukannya seperti ini:

Mysqldump -uroot -p site_ru | gzip > /path/to/site_ru.sql.gz

Dan anda juga boleh menentukan tarikh arkib itu dibuat, seperti ini:

Mysqldump -uroot -p site_ru | gzip > `tarikh +/path/to/site_ru.sql.%Y%m%d.%H%M%S.gz`

Kekunci untuk menggunakan mysqldump

Berikut ialah kunci mysqldump yang paling popular:

Kembangkan senarai...

  • --add-drop-database - Menambah pernyataan DROP DATABASE sebelum setiap penyata CREATE DATABASE.
  • --add-drop-table — Menambah pernyataan DROP TABLE sebelum setiap pernyataan CREATE TABLE.
  • --add-locks - Menambah kenyataan LOCK TABLES sebelum pelaksanaan dan kenyataan UNLOCK TABLE selepas pelaksanaan setiap pembuangan jadual (untuk mempercepatkan akses kepada MySQL).
  • --all-databases, -A — Menyimpan semua jadual daripada semua pangkalan data yang diuruskan oleh pelayan semasa.
  • --allow-keywords - Benarkan penciptaan nama lajur yang sepadan dengan kata kunci. Ketiadaan konflik dipastikan dengan menambah nama jadual sebagai awalan pada nama setiap lajur.
  • —komen, -i — Parameter ini membolehkan anda menambah pada tempat pembuangan Maklumat tambahan, seperti versi mysqldump, versi MySQL, nama hos di mana pelayan MySQL berada.
  • --compact Pilihan ini menyebabkan mysqldump mencipta dump menggunakan format paling padat yang mungkin. Parameter adalah bertentangan dengan -komen.
  • --compatible=name — Parameter menjana output yang serasi dengan DBMS lain atau yang lebih lama versi MySQL. Daripada kata kunci nama, anda boleh menggunakan: "ansi", "mysql323", "mysql40", "postgresql", "oracle", "mssql", "db2", "maxdb", "no_key_options", "no_table_options", "no_field_options" . Anda boleh menggunakan berbilang nilai, dipisahkan dengan koma.
  • --complete-insert, -c — Gunakan bentuk lengkap pernyataan INSERT (dengan nama lajur).
  • --create-options - Menambah maklumat tambahan pada kenyataan CREATE TABLE. Ini boleh menjadi jenis jadual, nilai AUTO_INCREMENT awal dan parameter lain.
  • --databases, -B — Parameter membenarkan anda untuk menentukan nama beberapa pangkalan data yang anda ingin buat dump.
  • --delayed — Gunakan arahan INSERT DELAYED apabila memasukkan baris.
  • --delete-master-logs - Pelayan replikasi induk memadam log binari (logbin) secara automatik selepas dump berjaya dibuat menggunakan mysqldump. Pilihan ini secara automatik mendayakan pilihan "--master-data".
  • --disable-keys, -K - Untuk setiap jadual, kelilingi penyataan INSERT dengan ungkapan /*!40000 ALTER TABLE tbl_name DISABLE KEYS */; dan /*!40000 ALTER TABLE tbl_name DAYS KEYS */; dalam output hasil pembuangan. Ini akan mempercepatkan memuatkan data ke pelayan untuk jadual seperti MyISAM, kerana indeks dibuat selepas semua data dimasukkan.
  • --extended-insert, -e — Gunakan arahan INSERT dengan yang baru sintaks berbilang baris(meningkatkan kekompakan dan prestasi pengendali input).
  • --flush-logs, -F — Tulis data ke cakera syslog daripada penimbal pelayan MySQL sebelum memulakan pembuangan.
  • --force, -f — Teruskan walaupun ralat berlaku semasa proses penciptaan dump.
  • —hex-blob — Parameter membolehkan anda mewakili data binari dalam medan jenis BINARI, VARBINA, BLOB dan BIT dalam format perenambelasan. Jadi urutan "abc" akan digantikan dengan 0x616263.
  • --ignore-table=db_name.tbl_name — Membenarkan jadual tbl_name bagi pangkalan data db_name diabaikan semasa membuat dump. Jika anda perlu mengecualikan beberapa jadual daripada tempat pembuangan, anda mesti menggunakan beberapa parameter "--ignore-table", menyatakan satu jadual dalam setiap parameter.
  • --insert-ignore — Menambah kata kunci ABAIKAN ke dalam pernyataan INSERT.
  • --lock-all-tables, -x — Menentukan pilihan ini menyebabkan semua jadual dalam semua pangkalan data dikunci sementara pembuangan penuh semua pangkalan data dibuat.
  • --lock-tables, -l — Menentukan pilihan ini mengunci jadual pangkalan data yang mana dump sedang dibuat.
  • --no-autocommit - Termasuk semua penyata INSERT pada jadual yang sama dalam satu transaksi, menghasilkan pemuatan data yang lebih cepat.
  • --no-create-db, -n — Menekan lambakan kenyataan CREATE DATABASE yang ditambah secara automatik apabila menggunakan pilihan --databases dan --all-databases.
  • --no-data, -d — Menindas penciptaan pernyataan INSERT dalam dump, yang boleh berguna apabila membuang struktur pangkalan data tanpa data itu sendiri.
  • —pilih — Parameter bertujuan untuk mengoptimumkan kelajuan sandaran data dan merupakan pintasan yang merangkumi pilihan berikut: —cepat —add-drop-table —add-lock —create-options —disable-keys —extended-insert —kunci -tables —set-charset . Sejak MySQL 4.1, pilihan --opt digunakan secara lalai, i.e. Semua pilihan di atas didayakan secara lalai, walaupun ia tidak dinyatakan. Untuk mengecualikan tingkah laku ini, anda mesti menggunakan parameter --skip-opt
  • --order-by-primary - Menentukan parameter menyebabkan perkara ini berlaku. bahawa setiap jadual disusun mengikut kunci utama atau indeks unik pertama.
  • --port, -P - Nombor port TCP, digunakan untuk menyambung ke hos.
  • —protocol=(TCP|SOKET|PIPE|MEMORY) — Parameter membenarkan anda menetapkan protokol untuk menyambung ke pelayan.
  • —cepat, -q — Membolehkan anda mula menjana tempat pembuangan tanpa menunggu muatan penuh data daripada pelayan dan dengan itu menjimatkan memori.
  • --quote-names, -Q — Meletakkan pangkalan data, jadual dan nama lajur dalam backtick `. Pada MySQL 4.1, pilihan ini didayakan secara lalai.
  • --replace - Menambah kata kunci REPLACE pada pernyataan INSERT. Pilihan ini mula-mula muncul dalam MySQL 5.1.3.
  • --result-file=/path/to/file, -r /path/to/file — Parameter menghantar dump ke fail fail. Pilihan ini amat berguna pada Windows, tanpa menggunakan baris arahan. apabila anda boleh mengubah hala hasil ke fail menggunakan urutan > dan >>.
  • --routines, -R — Pilihan ini mencipta pembuangan prosedur dan fungsi yang disimpan. Tersedia dengan MySQL 5.1.2.
  • --single-transaction - Pilihan mencipta dump sebagai satu transaksi.
  • —skip-comments — Parameter ini membolehkan anda menyekat output maklumat tambahan ke tempat pembuangan.
  • --socket=/path/to/socket, -S /path/to/socket — Fail soket untuk menyambung ke localhost.
  • —tab=/path/, -T /path/ — Apabila menggunakan parameter ini, dua jadual dicipta dalam direktori laluan untuk setiap jadual fail berasingan: tbl_name.sql, yang mengandungi penyataan CREATE TABLE dan tbl_name.txt, yang mengandungi data jadual yang dipisahkan tab. Format data boleh diganti secara eksplisit menggunakan pilihan --fields-xxx dan --lines-xxx.
  • --tables - Mengatasi parameter --databases (-B). Semua argumen yang mengikuti parameter ini dianggap sebagai nama jadual.
  • —triggers — Mencipta longgokan pencetus. Pilihan ini didayakan secara lalai. Untuk melumpuhkannya, gunakan pilihan --skip-triggers.
  • --events, -E — Mencipta tempat pembuangan acara. Lihat Penjadual Acara MySQL atau pengurus acara terbina dalam dalam MySQL.
  • —tz-utc — apabila menggunakan parameter ini, operator seperti SET TIME_ZONE=’+00:00′ akan ditambahkan pada tempat pembuangan, yang akan membolehkan tempat pembuangan ditukar dalam zon waktu yang berbeza.
  • --verbose, -v — Mod keluaran lanjutan. Kesimpulan lagi maklumat terperinci tentang kerja program.
  • --version, -V — Paparkan maklumat tentang versi program.
  • —where=’where-condition’, -w ‘where-condition’ — Buang hanya rekod yang dipilih. Sila ambil perhatian bahawa tanda petikan diperlukan.
  • --xml, -X — Mewakili pembuangan pangkalan data sebagai XML.
  • --first-slave, -x — Mengunci semua jadual dalam semua pangkalan data.
  • —debug=…, -# — Pantau kemajuan program (untuk nyahpepijat).
  • --help - Output maklumat latar belakang dan keluar dari program.

Salam, kawan-kawan! 🙂

Hari ini saya memutuskan untuk meneruskan perbualan tentang bekerja dengan MySQL dalam konsol dan memberi perhatian kepada prosedur untuk mengeksport pangkalan data MySQL.

Dalam artikel ini saya akan bercakap tentang cara membuang pangkalan data MySQL, serta memuat naik data daripada MySQL ke fail Excel dan format csv.

Kami akan pertimbangkan pelbagai pilihan persampelan maklumat daripada: mencipta lambakan satu atau beberapa pangkalan data, mengeksport data daripada jadual individu dan hasil sewenang-wenangnya PILIH permintaan.

Kami juga akan bercakap tentang cara mengeluarkan data daripada pangkalan data MySQL dalam konsol pelayan dan baris arahan MySQL.

Dalam artikel ini, saya tidak akan bercakap tentang cara mengeksport data menggunakan phpMyAdmin dan alat visual yang lain.

Pertama, kerana sudah ada bahan yang mencukupi mengenai topik ini di Internet. Lebih-lebih lagi, ia adalah bahan berkualiti tinggi, yang saya tidak berminat untuk menyalin-tampal.

Dan, kedua, saya sendiri menyemak secara ringkas proses pengeluaran maklumat daripada pangkalan data MySQL ke fail SQL dalam salah satu artikel saya, di mana saya bercakap tentang .

Jadi jika anda tidak pemaju profesional atau pentadbir sistem, yang mungkin mendapati maklumat tentang bekerja dengan konsol berguna, dan anda hanya datang untuk arahan tentang cara mengeksport pangkalan data ke phpMyAdmin, kemudian anda boleh mengehadkan diri anda untuk membaca maklumat pada pautan di atas.

Saya mahu anda memahami saya dengan betul: Saya tidak mahu menyinggung perasaan anda dalam apa jua cara, tetapi saya hanya mahu anda menghabiskan masa anda dengan faedah maksimum untuk pekerjaan itu dan mendapat apa yang mereka cari.

Ini menyimpulkan bahagian pengenalan dan kami beralih kepada semakan arahan konsol untuk mencipta dump pangkalan data MySQL, yang saya memutuskan untuk mengisih mengikut jumlah data yang disimpan: bermula daripada mengeksport keseluruhan pangkalan data, berakhir dengan jadual individu dan keputusan pertanyaan sewenang-wenangnya.

Mencipta longgokan pangkalan data MySQL melalui konsol

Saya ingin membuat penjelasan kecil pada awalnya.

Lambakan pangkalan data ialah fail dengan set SQL arahan, yang, apabila dilancarkan, membolehkan anda membuat pangkalan data dan jadual, serta mengisinya dengan maklumat. Lambakan diperlukan bagi mereka yang ingin memuat turun pangkalan data MySQL untuk menyalinnya ke pelayan lain atau dalam pangkalan data sedia ada.

Juga, jika ada yang tidak tahu, sandaran pangkalan data Data MySQL, pada asasnya, pembuangannya dibuat pada tempoh masa tertentu, yang membolehkan anda memulihkan struktur dan data pangkalan data jika perlu.

Eksport data hanyalah mengekstrak maklumat daripada jadual ke dalam bentuk teks Untuk kerja selanjutnya dengan penyunting teks atau grafik.

Oleh itu, arahan untuk tindakan ini akan berbeza sedikit.

Untuk mencipta dump pangkalan data, MySQL mempunyai utiliti terbina dalam yang dipanggil mysqldump, yang mesti digunakan di luar baris arahan MySQL dalam konsol pelayan atau shell lain.

Jadi, untuk pilihan yang paling mudah dan paling biasa - mengeksport data daripada pangkalan data tertentu ke Konsol MySQL Untuk memindahkannya ke pelayan lain atau salinan dalaman, anda perlu menjalankan arahan berikut:

Nama pengguna Mysqldump -u -p database_name > path_and_dump_file_name

Utiliti ini boleh membuat lambakan pangkalan data MySQL hanya dalam bentuk fail dengan arahan SQL, jadi tidak kira sambungan yang anda pilih untuk fail anda, kandungannya akan sama dalam apa jua keadaan. Dan jangan lupa untuk menyemak kebenaran menulis direktori di mana ia akan ditempatkan sebelum mengeksport maklumat daripada MySQL supaya fail itu boleh dibuat.

Jika tiba-tiba anda perlu membuat pembuangan dengan semua pangkalan data pada pelayan, kemudian gunakan pilihan seterusnya arahan:

Nama pengguna Mysqldump -u -p --all-databases > path_and_dump_file_name

Untuk membuang hanya beberapa pangkalan data tertentu, anda perlu memanggil mysqldump dengan parameter berikut:

Nama pengguna Mysqldump -u -p --databases database_name1, database_name2, ... > path_and_dumpfile_name

Akibatnya, dalam setiap kes anda akan menerima longgokan pangkalan data MySQL yang mengandungi arahan untuk mencipta struktur jadual yang terkandung (medan, jenisnya, indeks, kunci, dll.), serta operasi untuk mengisinya dengan data.

Pilihan ini hanya sesuai untuk memulihkan dan menyalin keseluruhan pangkalan data.

Mengenai cara membuat sandaran tertentu jadual MySQL dan menerima data mereka dalam bentuk yang boleh dibaca, kita akan bercakap lebih lanjut.

Melambakkan jadual MySQL dan mengeksport data

Untuk membuat longgokan jadual pangkalan data MySQL tertentu, kami memerlukan utiliti yang sama mysqldump, dipanggil dengan parameter berikut:

Nama pengguna Mysqldump -u -p nama_pangkalan data table_name1, table_name2, ... > path_and_dumpfile_name

Apabila memanggil mysqldump, anda boleh menentukan jadual yang diperlukan sebagai nilai parameter --meja, apabila digunakan parameter --pangkalan data akan diabaikan:

Mysqldump -u nama pengguna -p --databases database_name1, database_name2 --tables table_name1, table_name2, ... > path_and_dumpfile_name

Contoh di atas akan memaparkan ralat berikut:

Mysqldump: Mendapat ralat: 1049: Pangkalan data tidak diketahui "database_name1," semasa memilih pangkalan data

Seperti yang anda lihat, hanya pangkalan data terkini daripada senarai akan digunakan. Pada dasarnya, tingkah laku ini agak logik, kerana Jadual yang ditentukan mungkin tidak muncul dalam semua pangkalan data.

Okay, kami telah menerima lambakan jadual pangkalan data MySQL. Ia boleh digunakan untuk memulihkannya atau menyalinnya bersama-sama dengan struktur.

Tetapi bagaimana jika anda hanya perlu mendapatkan maklumat yang disimpan di dalamnya dan, sebaik-baiknya, dalam bentuk yang boleh dibaca supaya anda boleh menghantarnya kepada pengurus dan melihatnya dalam editor teks atau hamparan biasa? MySQL mempunyai alat untuk ini juga.

Pilihan untuk memanggil utiliti akan membantu kami mencapai rancangan kami mysql daripada konsol dengan parameter tertentu:

Nama pengguna Mysql -u -p database_name -e "PILIH * DARI nama_jadual"

Perintah ini akan membolehkan kami melaksanakan pertanyaan ke pangkalan data yang diperlukan dan mengeluarkan hasilnya ke konsol tanpa pergi ke baris arahan rentetan MySQL.

Nah, untuk tidak mengeluarkan data ke konsol, tetapi untuk menulisnya ke fail, anda perlu menambah arahan seperti berikut:

Nama pengguna Mysql -u -p -e "PILIH * DARI nama jadual" > laluan_dan_nama fail

Terima kasih kepada pembinaan ini, kami bukan sahaja boleh mendapatkan data yang disimpan dalam semua medan jadual, tetapi juga dalam bidang tertentu. Untuk melakukan ini, cuma gantikan simbol kad bebas (*) dengan yang diperlukan, dipisahkan dengan koma.

Akibatnya, output kami akan menjadi seperti biasa fail teks, yang akan mengandungi nama medan dalam bentuk pengepala dan maklumat mengenainya untuk semua rekod. Ia boleh dibuka dalam editor teks biasa, tidak kira apa resolusi yang anda berikan semasa menciptanya.

Jika anda ingin mengeksport data daripada pangkalan data MySQL dalam format xls atau csv supaya fail yang terhasil dipaparkan dengan betul dalam editor hamparan, maka kami akan memberitahu anda cara melakukannya sedikit kemudian :)

Mencipta sandaran dan mengeluarkan data daripada pangkalan data MySQL menggunakan pertanyaan

Kami bercakap tentang cara membuang pangkalan data MySQL - satu atau beberapa, serta jadual individu. Tetapi kadangkala dalam amalan terdapat kes apabila anda perlu mengeksport set data yang tidak terhad kepada satu jadual. Atau anda perlu memilih hanya beberapa data daripada jadual.

Pembangun projek korporat terutamanya sering menghadapi perkara ini apabila pengurus meminta mereka menyediakan semua jenis data statistik. Atau apabila anda perlu membuat sandaran bahagian tertentu jadual untuk memulihkannya dengan cepat.

Untuk sandaran kami memerlukan utiliti yang sama mysqldump, yang perlu dipanggil seperti ini:

Mysqldump -u user_name -p database_name table_name --where "lookup" > path_and_dump_file_name

Akibatnya, kami akan menerima fail dengan arahan SQL untuk mencipta jadual dengan keseluruhan strukturnya, yang, selepas penciptaan, akan diisi dengan maklumat yang dipilih menggunakan pertanyaan carian.

Jika kita hanya perlu mendapatkan data yang disimpan dalam satu atau lebih jadual, maka kita perlu mengubah suai perintah yang digunakan dalam kes sebelumnya apabila mendapatkan semula semua data dalam jadual, hanya dengan beberapa penjelasan:

Mysql -u user_name -p -e "SELECT * FROM table_name WHERE lookup" > path_and_file_name

Seperti yang anda fahami, sebagai tambahan kepada pelbagai penjelasan yang dinyatakan dalam permintaan menggunakan arahan DI MANA, anda boleh menggunakan yang lain binaan SQL: SERTAI, KESATUAN dan lain-lain.

Anda boleh mengumpul mana-mana statistik yang anda mahu :)

Tindakan yang sama juga boleh dilakukan apabila bekerja pada baris arahan MySQL menggunakan arahan berikut:

PILIH * DARI database_table WHERE carian KE OUTFILE "path_and_file_name";

Perintah ini direka khusus untuk mencipta fail dengan hasil pensampelan. Selain itu, hasilnya bukan sahaja boleh dieksport ke fail, tetapi juga ditulis kepada pembolehubah, dan data output boleh diformatkan dalam pelbagai cara.

Jika perkara di atas adalah kes anda, maka senarai penuh Anda boleh mencari parameter dan pilihan untuk memanggil arahan ini di sini - https://dev.mysql.com/doc/refman/5.7/en/select-into.html

Di penghujungnya lawatan singkat untuk mysqldump Saya ingin memberi pilihan untuk memanggil arahan dengan senarai parameter untuk mencipta dump yang dioptimumkan bagi pangkalan data MySQL dan jadual, memulihkan pangkalan data dan jadual individu yang akan mengambil masa kurang daripada dengan panggilan biasa:

Nama pengguna Mysqldump -u -h host_or_IP_MySQL_server -p --no-autocommit --opt database_name > path_and_dump_file_name;

Demi eksperimen saya gunakan pilihan ini untuk membuang pangkalan data MySQL bersaiz 143 MB. Pemulihan berikutnya mengambil masa 59 saat berbanding 1 minit dan 3 saat apabila pangkalan data dipulihkan daripada dump yang dibuat dengan memanggil mysqldump tanpa parameter khas.

Saya bersetuju bahawa ini adalah perkara kecil. Tetapi ini hanya dalam kes jumlah data tertentu. Jika anda menggunakan teknik ini semasa membuat dump lebih besar daripada 1GB, perbezaannya akan menjadi lebih ketara.

Jika anda menghadapi situasi sedemikian, jangan lupa untuk mengarkibkan dahulu tempat pembuangan pangkalan data MySQL. Yang terbaik ialah tar.gz. Kemudian pemulihan akan mengambil masa yang lebih singkat.

Eksport data daripada MySQL ke Excel dan fail csv

Bukan tanpa alasan saya menggabungkan maklumat tentang mengeluarkan maklumat daripada MySQL ke dalam dua format ini dalam satu blok, kerana... ia sangat serupa, ia digunakan dengan cara yang lebih kurang sama (untuk menstruktur maklumat dalam bentuk jadual) dan arahan yang sama untuk eksport akan dipanggil.

Seperti yang anda ketahui, satu-satunya perbezaan yang ketara antara format ini ialah itu sambungan xls dan xlsx mempunyai fail yang dibuat dalam program Microsoft Office Excel, yang hanya berfungsi pada Windows, dan fail csv s adalah lebih universal dan operasi dengannya boleh dilakukan dalam banyak editor.

Ini tidak bermakna bahawa xls berada di mana-mana kecuali Microsoft Office Excel tidak akan dibuka. OpenOffice yang sama mengesahkan sebaliknya.

Tetapi untuk ini menjadi mungkin, sokongan ini mesti ada produk perisian. csv boleh dibaca walaupun dalam editor teks biasa seperti Notepad, tetapi borang ini tidak boleh dibaca sepenuhnya.

Biar saya mulakan dengan fakta bahawa anda hanya boleh mengeksport hasil pertanyaan SQL ke xls atau csv, yang kami pelajari untuk bekerja sebelum ini, kerana adalah mustahil untuk mengeluarkan keseluruhan pangkalan data ke dalam satu fail dalam satu operasi.

Pertama, ini tidak optimum, kerana... fail sedemikian tidak mungkin dibuka apabila jumlah yang besar maklumat yang disimpan dalam pangkalan data. Dan, kedua, tidak jelas cara membahagikan maklumat di dalam fail ke dalam jadual dan medan.

Tidak, sudah tentu mungkin untuk melakukan ini, tetapi ia tidak mungkin dilakukan dengan satu arahan dan secara umum tidak mungkin sesiapa akan melakukan ini dalam konsol. Saya fikir untuk tujuan ini anda memerlukan perisian khas atau sekurang-kurangnya skrip.

Jika anda tiba-tiba tahu bagaimana anda boleh mengeksport maklumat daripada keseluruhan pangkalan data MySQL ke dalam satu atau beberapa fail xls dalam konsol sekaligus, kemudian tulis mengenainya dalam ulasan. Saya fikir membaca tentang ini akan berguna untuk ramai orang.

Jadi, jika kita bercakap tentang cara mengeksport data dari MySQL ke xls dan csv, maka ini boleh dilakukan secara langsung dalam konsol pelayan melalui utiliti mysql atau dalam, kerja yang saya perkenalkan kepada anda dalam artikel saya sebelum ini.

Mari kita mulakan mengikut urutan.

Eksport data daripada pangkalan data MySQL ke csv dan format xls Anda boleh menggunakan arahan berikut terus dalam konsol pelayan.

hidup Linux sistem:

Nama pengguna Mysql -u -d nama_pangkalan data -p -e "PILIH * DARI jadual_pangkalan data;" | sed "s/"/\"/;s/\t/\",\"/g;s/^/\"/;s/$/\"/;s/\n//g" > path_and_file_name. csv

Pada dasarnya, jika benar-benar perlu, anda boleh menggunakan arahan ini untuk mengeksport data MySQL ke fail Excel. Tetapi, secara jujur, saya tidak menangani perkara ini dalam amalan dan saya tidak tahu apa yang akan berlaku pada akhirnya, kerana... Saya sedang bekerja pada Windows. Jika anda menggunakan arahan ini di bawah Linux, sila tulis dalam ulasan tentang hasil kerja anda. Saya fikir maklumat itu akan menarik minat semua orang.

hidup Windows:

Eksport data daripada jadual MySQL ke csv menggunakan arahan di atas dalam dalam kes ini, malangnya, ia tidak akan mungkin, kerana Windows, tidak seperti Linux, tidak mempunyai terbina dalam arahan konsol untuk bekerja dengan benang, yang sed dalam Linux.

Sudah tentu, anda boleh memasangnya, tetapi ia terlalu menyusahkan. Sebagai alternatif, anda boleh menggunakan CygWin- emulator Konsol Linux untuk sistem Windows.

Ia bagus jika anda sudah memasangnya. Jika tidak, mengeksport data daripada pangkalan data MySQL menggunakan kaedah yang dipilih akan membawa kita terlalu banyak masalah.

Tetapi mengekstrak maklumat ke dalam fail xls semudah 5 kopecks :) Sangat mudah untuk melancarkannya dengan cara berikut yang saya cuba sendiri:

Nama pengguna Mysql -u -d nama_pangkalan data -p -e "PILIH * DARI jadual_pangkalan data;" > laluan_dan_nama_fail.xls

Dibuka fail ini dalam Microsoft Office Excel tanpa sebarang masalah sama sekali. Satu-satunya perkara ialah apabila membukanya, mesej dipaparkan pada skrin memberi amaran bahawa format sebenar fail yang dibuka berbeza daripada sambungan yang ditentukan.

Tetapi apabila mengesahkan tindakan itu, dokumen itu dibuka tanpa kesukaran - semua maklumat dibahagikan kepada sel dalam bentuk di mana ia disimpan dalam jadual itu sendiri.

Saya tidak tahu, mungkin jika anda melakukan sebarang tindakan khusus dalam Microsoft Office Excel, masalah akan timbul pada masa hadapan; Saya tidak menggali sedalam itu. Apabila melihat data seperti biasa, sekurang-kurangnya, saya tidak nampak apa-apa yang luar biasa.

Jika anda menghadapi sebarang masalah semasa menggunakan fail xls yang dieksport daripada MySQL, sama ada dalam program ini atau dalam program lain, sila beritahu saya dalam komen.

Menggunakan kaedah yang diterangkan di atas, anda boleh mengeksport kandungan pangkalan data MySQL ke fail csv, pada dasarnya. Tetapi kemudian data dari medan jadual yang berbeza akan ditulis secara beramai-ramai, tanpa pembatas, yang mungkin tidak dipaparkan dengan baik dalam pelbagai program untuk bekerja dengan jadual, di mana ia biasanya berfungsi dengan fail csv.

OpenOffice, dengan cara ini, tidak peduli :) Ia secara automatik mengehadkan maklumat yang diperolehi dalam cara kami mengeksport kandungan pangkalan data MySQL ke xls. Saya tidak tahu bagaimana dia melakukannya, tetapi saya mengesyorkan menggunakannya :)

Nah, Microsoft Office Excel yang sama memaparkan semua maklumat yang sepadan dengan satu rekod dalam jadual, menulisnya dalam satu sel tanpa sebarang pembatas. Saya rasa, itu Dengan cara yang sama Lebih banyak editor meja akan datang.

Oleh itu, apabila mengeksport pangkalan data MySQL ke fail csv, anda perlu melakukannya dengan mengasingkan maklumat watak istimewa, dilihat oleh editor.

Dan kemudian saya secara beransur-ansur mendekati kaedah kedua Eksport MySQL data dalam csv dan xls, yang melibatkan penggunaan baris arahan MySQL.

Jadi, untuk mengeksport data MySQL ke fail csv dengan cara ini, kami memerlukan arahan berikut:

PILIH * DARI pangkalan data_jadual KE OUTFILE "path_and_file_name.csv" MEDAN DITAMATKAN OLEH "," DILARANGKAN OLEH """ TALIAN DITAMATKAN OLEH "\n";

Hasil daripada pelaksanaannya, anda akan menerima fail csv dalam laluan yang anda tentukan semasa membuat panggilan, yang akan dibuka dengan betul dalam kebanyakan editor hamparan moden. Untuk berjaga-jaga, saya ingatkan anda untuk berlari perintah ini hanya diperlukan selepas menyambung ke pangkalan data MySQL.

Perintah ini juga bagus untuk mengeksport data MySQL ke fail xls untuk paparan yang betul dalam Microsoft Office Excel. Hanya dalam kes ini kita tidak memerlukan pemisah, kerana mereka akan mengganggu pembahagian maklumat ke dalam sel:

PILIH * DARI pangkalan data_jadual KE OUTFILE "path_and_file_name.xls";

Walau bagaimanapun, dalam amalan, tidak semuanya semudah yang saya terangkan. Semasa menjalankan arahan, anda mungkin menghadapi ralat berikut dalam konsol yang menghalang eksport daripada selesai:

ERROR 1290 (HY000): Pelayan MySQL sedang berjalan dengan pilihan --secure-file-priv jadi ia tidak dapat melaksanakan pernyataan ini

Ia disebabkan oleh fakta bahawa pelayan MySQL anda telah dimulakan dengan pilihan --secure-file-priv. Secara peribadi, saya menghadapi masalah ini kerana fakta bahawa untuk bekerja di konsol saya menggunakan kit pengedaran MySQL yang disertakan dalam kit OpenServer WAMP, yang seterusnya melancarkan pelayan MySQL dengan cara ini.

Terdapat dua cara untuk menyelesaikan masalah:

Kaedah pertama kelihatan terlalu rumit kepada saya, kerana... Saya perlu menyelidiki konfigurasi OpenServer, yang tidak ditulis oleh saya dengan semua keadaan berikutnya 🙂 Oleh itu, saya memutuskan untuk mengambil jalan kedua. Jika anda menghadapi masalah yang sama, ulangi selepas saya.

Mula-mula anda perlu pergi ke baris arahan MySQL dan jalankan salah satu daripada arahan berikut:

TUNJUKKAN PEMBOLEH UBAH SEPERTI "secure_file_priv"; PILIH @@GLOBAL.secure_file_priv;

Hasil daripada melaksanakan kedua-duanya akan menjadi nilai pembolehubah global MySQL secure_file_priv, yang mengandungi laluan ke direktori yang melaluinya operasi eksport dan import data MySQL boleh dilakukan (pada masa hadapan, pautan ke artikel tentang import data).

Itu. apabila menggunakan arahan MUAT DATA Dan PILIH... KE OUTFILE fail yang dieksport dan diimport hanya boleh didapati dalam direktori ini.

Dalam kes saya, pembolehubah ini biasanya ditetapkan kepada NULL, kerana Saya, seperti yang telah saya katakan, menggunakan utiliti MySQL daripada pengedaran yang disertakan dalam OpenServer untuk berfungsi dalam konsol. Nilai ini menunjukkan bahawa operasi eksport dan import data MySQL menggunakan arahan yang ditentukan telah ditutup sepenuhnya.

Seperti yang ternyata kemudian, ini adalah situasi biasa apabila menggunakan pelayan WAMP dan MAMP berkotak.

Malangnya, dalam kes saya, tidak mungkin menggunakan kaedah biasa untuk menukar nilai pembolehubah global MySQL:

SET pembolehubah_nama = nilai;

Akibatnya, saya hanya melihat ralat berikut dalam konsol:

ERROR 1238 (HY000) pada baris 1: Pembolehubah "secure_file_priv" ialah pembolehubah baca sahaja.

Akibatnya, untuk menukar nilai pembolehubah secure_file_priv dan buka operasi eksport dan import, saya perlu pergi ke fail konfigurasi MySQL mysql.ini, yang terletak dalam direktori akar pengedaran MySQL, atau boleh diakses dengan cara lain jika MySQL disertakan dengan WAMP/LAMP/ anda Binaan pelayan MAMP.

Dengan cara ini, jika anda ingin menukar laluan ke direktori kili pertukaran fail, anda perlu melakukan perkara yang sama.

Dalam kes saya, pembolehubah ini telah wujud dalam konfigurasi, hanya dalam bentuk komen:

Secure-file-priv = "%dprogdir%\\userdata\\temp"

Jika anda tidak memilikinya, tuliskannya dari awal di bahagian (sekurang-kurangnya bagi saya ia terletak di sana).

Saya tidak mengulasnya dan memutuskan untuk menggunakannya dalam bentuk di mana ia ditulis. Itu. apabila mengeksport data daripada MySQL dan mengimportnya semula, fail saya kini akan disimpan dalam direktori c:\openserver\userdata\temp\.

Selepas menukar konfigurasi (apa-apa sahaja, dengan cara itu), jangan lupa untuk memulakan semula pelayan anda atau perkhidmatan berasingan yang tetapan anda edit, jika boleh, untuk perubahan itu berkuat kuasa!

Yang pasti, selepas memulakan semula pelayan MySQL, paparkan pembolehubah sekali lagi secure_file_priv dan salin nilainya ke papan keratan.

Dan sekarang kita perlu memanggil arahan seperti pada mulanya, hanya sebelum nama fail ke mana maklumat dari pangkalan data MySQL akan disimpan, tulis laluan yang disimpan dalam pembolehubah yang kita ubah dalam bentuk berikut:

PILIH * DARI pangkalan data_jadual KE OUTFILE "secure_file_priv_value\file_name.csv";

Selepas ini, mengeksport data dari MySQL berfungsi dalam kes saya.

Perkara penting! Jika anda bekerja dengan MySQL di bawah Windows, maka jangan lupa untuk menukar "\" kepada "/" apabila menentukan laluan ke fail, jika tidak ralat akan menjadi --secure-file-priv masih akan terus muncul.

Ini ialah artikel tentang cara membuang pangkalan data MySQL dan jadualnya, serta data output daripada jadual MySQL ke pelbagai format, sampai ke penghujungnya. Tulis ulasan anda dalam ulasan dan kongsi dengan semua orang pilihan skrip anda yang paling kerap anda gunakan dalam amalan.

Jika anda menyukai artikel tersebut, anda boleh mengucapkan terima kasih kepada pengarang dengan menyiarkan semula artikel tersebut media sosial atau kewangan menggunakan borang di bawah, supaya anda boleh membayar untuk pengehosan asas.

Semoga berjaya kepada semua orang dan jumpa lagi! 🙂

P.S.: jika anda memerlukan laman web atau perlu membuat perubahan kepada yang sedia ada, tetapi tidak ada masa atau keinginan untuk ini, saya boleh menawarkan perkhidmatan saya.

Lebih daripada 5 tahun pengalaman pembangunan laman web profesional. Bekerja dengan PHP

Utiliti mysqldump berfungsi untuk membuat sandaran dan memulihkan salinan sandaran (sering dipanggil "buangan") pangkalan data dan jadual MySQL. Utiliti direka untuk baris arahan dan berjalan di bawah sistem operasi Windows, FreeBSD dan beberapa yang lain. Mysqldump ialah perisian yang diedarkan secara bebas yang tidak memerlukan sebarang bayaran.

Untuk menyalin pangkalan data MySQL secara tempatan dengan jenis jadual ISAM dan MyISAM, lebih baik menggunakan utiliti yang ditulis dalam Perl: mysqlhotcopy. Ia berfungsi lebih pantas daripada mysqldump, kerana ia menyalin keseluruhan fail pangkalan data *.frm, *.myd dan *.myi, setelah mengunci jadual sebelum ini. Selain itu, untuk mysqlhotcopy berfungsi dengan betul, anda mesti mempunyai utiliti Unix: cp atau scp. Untuk jadual jenis InnoDB, mysqlhotcopy tidak akan berfungsi, kerana tidak semua fail jadual InnoDB disimpan dalam direktori pangkalan data MySQL standard.

Contoh penggunaan mysqldump

Sintaks asas mysqldump ialah:

pangkalan data mysqldump [OPTIONS] [jadual]
mysqldump [ PILIHAN] -- pangkalan data [ PILIHAN] DB1 [ DB2 DB3... ]
mysqldump [PILIHAN] -- semua pangkalan data [PILIHAN]

Tanpa menyatakan nama jadual atau menggunakan pilihan --databases atau --all-databases, longgokan semua pangkalan data yang terletak di MySQL akan diperolehi.

Tulis pembuangan pangkalan data dari lokasi terpencil pelayan MySQL dengan alamat 127.0.0.2 ke komputer tempatan dalam fail dump_db.sql:

mysqldump - uroot - h127.0.0.2 - p db_name > dump_db.sql

Pulihkan pangkalan data MySQL db_name ke pelayan jauh di 127.0.0.2 dari tempat pembuangan sampah yang terletak di komputer tempatan, dalam fail dump_db.sql:

mysql - uroot - h127.0.0.2 - p db_name< dump_db.sql

Tulis longgokan pangkalan data MySQL (pangkalan data1, pangkalan data2, pangkalan data3) yang terletak pada pelayan jauh di 127.0.0.2 di fail tempatan dump_db.sql:

mysqldump - uroot - h127.0.0.2 - p - B pangkalan data1 pangkalan data2 pangkalan data3 > dump_db.sql

Persampelan tidak lebih daripada 50 rekod (contohnya, tidak diperlukan untuk ujian salinan penuh DB):

Salin pangkalan data MySQL ke komputer jauh:

mysqldump -- pilih pangkalan data | mysql -- hos= hos jauh - pangkalan data C

Salin hanya struktur pangkalan data MySQL:

mysqldump - uroot - hh127.0.0.2 - p -- no- data my_dbname > my_db_structure.sql

Utiliti mysqldump, yang digunakan tanpa pilihan --opt atau --quick, akan menulis keseluruhan hasil kerjanya ke ingatan sebelum membuang hasil pengambilan maklumat. Ini boleh menyebabkan masalah apabila membuang pangkalan data yang besar. Juga ambil perhatian bahawa tidak perlu menggunakan pilihan --opt atau -e jika anda merancang untuk menggunakan salinan baru program mysqldump untuk mendapatkan dump dan kemudian memainkannya semula pada pelayan MySQL yang sangat lama.

Semua parameter utiliti mysqldump Anda boleh melihatnya dengan menjalankannya seperti ini:

mysqldump --help

Senarai standard parameter mysqldump dengan Penerangan ringkas disiarkan di bawah:

--add-drop-database
Menambah DROP DATABASE sebelum setiap kenyataan CREATE DATABASE.

--add-drop-table
Menambah DROP TABLE sebelum setiap pernyataan CREATE TABLE.

--tambah-kunci
Menambah LOCK TABLES sebelum pelaksanaan dan UNLOCK TABLE selepas pelaksanaan setiap dump jadual (untuk mempercepatkan akses kepada MySQL).

--semua-pangkalan data, -A
Menyimpan semua jadual daripada semua pangkalan data yang diuruskan oleh pelayan semasa.

--benarkan-kata kunci
Benarkan membuat nama lajur yang sepadan dengan kata kunci. Ketiadaan konflik dipastikan dengan menambah nama jadual sebagai awalan pada nama setiap lajur.

--komen, -i
Parameter ini membolehkan anda menambah maklumat tambahan pada dump, seperti versi mysqldump, versi MySQL dan nama hos di mana pelayan MySQL berada.

--padat
Pilihan ini memberitahu mysqldump untuk membuat dump menggunakan format paling padat yang mungkin. Pilihannya adalah bertentangan dengan --komen.

--compatible=nama
Pilihan menjana output yang serasi dengan DBMS lain atau versi MySQL yang lebih lama. Daripada kata kunci nama, anda boleh menggunakan: "ansi", "mysql323", "mysql40", "postgresql", "oracle", "mssql", "db2", "maxdb", "no_key_options", "no_table_options", "no_field_options" . Anda boleh menggunakan berbilang nilai, dipisahkan dengan koma.

--sisipkan-lengkap, -c
Bentuk penuh pernyataan INSERT (dengan nama lajur) digunakan.

--buat-pilihan
Menambah maklumat tambahan pada kenyataan CREATE TABLE. Ini boleh menjadi jenis jadual, nilai AUTO_INCREMENT awal dan parameter lain.

--pangkalan data, -B
Pilihan ini membolehkan anda menentukan nama berbilang pangkalan data yang anda ingin buang.

--ditangguhkan
Gunakan arahan INSERT DELAYED apabila memasukkan baris.

--delete-master-logs
Pelayan replikasi utama secara automatik memadam log binari (logbin) selepas dump berjaya dibuat menggunakan mysqldump. Pilihan ini secara automatik mendayakan pilihan "--master-data".

--disable-keys, -K

Untuk setiap jadual, kelilingi penyataan INSERT dengan ungkapan /*!40000 ALTER TABLE tbl_name DISABLE KEYS */; dan /*!40000 ALTER TABLE tbl_name DAYS KEYS */; dalam output hasil pembuangan. Ini akan mempercepatkan memuatkan data ke pelayan untuk jadual seperti MyISAM, kerana indeks dibuat selepas semua data dimasukkan.

--dilanjutkan-sisip, -e
Gunakan arahan INSERT dengan sintaks berbilang baris baharu (meningkatkan kekompakan dan prestasi pernyataan input).

--flush-log, -F
Tulis data log sistem daripada penimbal pelayan MySQL ke cakera sebelum memulakan pembuangan.

--paksa, -f
Teruskan walaupun ralat berlaku semasa proses penciptaan dump.

--hex-blob
Parameter membolehkan anda mewakili data binari dalam medan jenis BINARI, VARBINA, BLOB dan BIT dalam format perenambelasan. Jadi urutan "abc" akan digantikan dengan 0x616263.

--ignore-table=db_name.tbl_name
Membolehkan anda mengabaikan jadual tbl_name bagi pangkalan data db_name semasa membuat dump. Jika anda perlu mengecualikan beberapa jadual daripada tempat pembuangan, anda mesti menggunakan beberapa parameter "--ignore-table", menyatakan satu jadual dalam setiap parameter.

--masukkan-abaikan
Menambah kata kunci IGNORE pada pernyataan INSERT.

--kunci-semua-meja, -x
Menentukan pilihan ini menyebabkan semua jadual dalam semua pangkalan data dikunci sementara pembuangan penuh semua pangkalan data dibuat.

--kunci-meja, -l
Menentukan parameter ini mengunci jadual dalam pangkalan data yang sedang dibuang.

--tiada-autokomit
Termasuk semua penyata INSERT pada jadual yang sama dalam satu transaksi, menghasilkan pemuatan data yang lebih cepat.

--tidak-buat-db, -n
Menyekat lambakan kenyataan CREATE DATABASE yang ditambah secara automatik apabila menggunakan pilihan --databases dan --all-databases.

--tiada-data, -d
Menindas penciptaan pernyataan INSERT dalam dump, yang boleh berguna apabila membuang struktur pangkalan data tanpa data itu sendiri.

--pilih
Parameter ini bertujuan untuk mengoptimumkan kelajuan sandaran data dan merupakan singkatan yang merangkumi pilihan berikut: --cepat --tambah-jatuhkan-jadual --tambah-kunci --buat-pilihan --lumpuhkan-kunci --dilanjutkan- masukkan --lock-tables --set-charset. Sejak MySQL 4.1, pilihan --opt digunakan secara lalai, i.e. Semua pilihan di atas didayakan secara lalai, walaupun ia tidak dinyatakan. Untuk mengecualikan tingkah laku ini, anda mesti menggunakan parameter --skip-opt

--perintah-mengikut-utama
Menentukan parameter menyebabkan perkara ini berlaku. bahawa setiap jadual diisih mengikut kunci utamanya atau indeks unik pertama.

--pelabuhan, -P
Nombor port TCP yang digunakan untuk menyambung ke hos.

--protocol=(TCP|SOKET|PIPE|MEMORY)
Parameter membolehkan anda menetapkan protokol untuk menyambung ke pelayan.

--cepat, -q
Membolehkan anda mula menjana dump tanpa menunggu data dimuat turun sepenuhnya dari pelayan, dengan itu menjimatkan memori.

--petikan-nama, -Q
Melampirkan pangkalan data, jadual dan nama lajur dengan backtick `. Pada MySQL 4.1, pilihan ini didayakan secara lalai.

--ganti
Menambah kata kunci REPLACE pada pernyataan INSERT. Pilihan ini mula-mula muncul dalam MySQL 5.1.3.

--result-file=/path/to/file, -r /path/to/file
Pilihan mengarahkan dump ke fail. Pilihan ini amat berguna pada Windows, tanpa menggunakan baris arahan. apabila anda boleh mengubah hala hasil ke fail menggunakan urutan > dan >>.

--rutin, -R
Pilihan ini mencipta lambakan prosedur dan fungsi yang disimpan. Tersedia dengan MySQL 5.1.2.

--satu-urus niaga
Pilihan mencipta dump sebagai satu transaksi.

--langkau-komen
Parameter ini membolehkan anda menyekat output maklumat tambahan ke tempat pembuangan.

--soket=/path/to/socket, -S /path/to/socket
Fail soket untuk menyambung ke localhost.

--tab=/path/, -T /path/
Menggunakan pilihan ini mencipta dua fail berasingan dalam direktori laluan untuk setiap jadual: tbl_name.sql, yang mengandungi pernyataan CREATE TABLE dan tbl_name.txt, yang mengandungi data jadual yang dipisahkan tab. Format data boleh diganti secara eksplisit menggunakan pilihan --fields-xxx dan --lines-xxx.

--meja
Mengatasi pilihan --databases (-B). Semua argumen yang mengikuti parameter ini dianggap sebagai nama jadual.

--pencetus
Longgokan pencetus dibuat. Pilihan ini didayakan secara lalai. Untuk melumpuhkannya, gunakan pilihan --skip-triggers.

--tz-utc
apabila menggunakan parameter ini, operator seperti SET TIME_ZONE="+00:00" akan ditambahkan pada tempat pembuangan, yang akan membolehkan tempat pembuangan ditukar dalam zon waktu yang berbeza.

--verbose, -v
Mod keluaran lanjutan. Memaparkan maklumat yang lebih terperinci tentang operasi program.

--versi, -V
Paparkan maklumat tentang versi program.

--where="where-condition", -w "where-condition"
Buang hanya rekod yang dipilih. Sila ambil perhatian bahawa petikan diperlukan: "--where=user="test"" "-wuserid>1" "-wuserid

--xml, -X
Mewakili lambakan pangkalan data sebagai XML.

--hamba-pertama, -x
Mengunci semua jadual dalam semua pangkalan data.

--debug=..., -#
Pantau kemajuan program (untuk nyahpepijat).

--membantu
Bantuan dipaparkan dan program tamat.

Mysqldump - dokumentasi dan contoh.