hanya data mysqldump

Jawaban:

553
mysqldump --no-create-info ...

Anda juga dapat menggunakan:

  • --skip-triggers: jika Anda menggunakan pemicu
  • --no-create-db: jika Anda menggunakan --databases ...opsi
  • --compact: jika Anda ingin menyingkirkan komentar tambahan
matei
sumber
47
Ini adalah cmd penuh untuk copy pastermysqldump -u USERNAME -h HOST --no-create-info --skip-triggers YOURDATABASENAME YOURTABLENAME --where='id=12345678'
Yzmir Ramirez
2
Jika Anda mendapatkannya Access denied for user ... to database '...' when doing LOCK TABLES, gunakan--single-transaction
Rolf
@YzmirRamirez terima kasih tapi FYI di windows saya harus menggunakan tanda kutip ganda untuk --where. Misalnya,--where="id=2"
Kip
Ini adalah penghemat yang brilian bagi saya. Terima kasih.
Ken Ingram
149

Ini seharusnya bekerja:

# To export to file (data only)
mysqldump -u [user] -p[pass] --no-create-info mydb > mydb.sql

# To export to file (structure only)
mysqldump -u [user] -p[pass] --no-data mydb > mydb.sql

# To import to database
mysql -u [user] -p[pass] mydb < mydb.sql

CATATAN: tidak ada ruang antara -p&[pass]

Ish
sumber
12
--no-create-dbredundan saat menggunakan--no-create-info
James McMahon
4
Ruang setelah -pbaik
Terima kasih
12
Biasanya lebih baik menggunakan -p tanpa memberikan kata sandi sehingga kata sandi tidak disimpan dalam bash history Anda (Anda akan diminta untuk memasukkan kata sandi setelah Anda menjalankan perintah).
Dan
2
Selain saran @ Dan, ini juga membuat kata sandi terlihat oleh semua pengguna yang dapat mendaftar proses saat ini ( ps -ef)
TMG
1
Meninggalkan kata sandi setelah -popsi membuat mysqldumpmeminta kata sandi.
Melle
22
 >> man -k  mysqldump [enter in the terminal]

Anda akan menemukan penjelasan di bawah ini

--tidak-buat-info, -t

Jangan menulis pernyataan CREATE TABLE yang membuat ulang setiap tabel yang dibuang. Catatan Opsi ini tidak mengecualikan pernyataan yang membuat grup file log atau tablespace dari output mysqldump; Namun, Anda dapat menggunakan opsi --no-tablespaces untuk tujuan ini.

--no-data, -d

Jangan menulis informasi baris tabel apa pun (yaitu, jangan membuang konten tabel). Ini berguna jika Anda ingin membuang hanya pernyataan CREATE TABLE untuk tabel (misalnya, untuk membuat salinan tabel yang kosong dengan memuat file dump).

# To export to file (data only)
mysqldump -t -u [user] -p[pass] -t mydb > mydb_data.sql

# To export to file (structure only)
mysqldump -d -u [user] -p[pass] -d mydb > mydb_structure.sql
Angelin Nadar
sumber
3
apakah ada alasan untuk menggunakan dua kali opsi '-t' dan '-d'?
erwan
19

Jika Anda hanya ingin kueri INSERT, gunakan yang berikut ini:

mysqldump --skip-triggers --compact --no-create-info

Jonathan
sumber
terima kasih untuk --compactyang menghilangkan pernyataan komentar tambahan
chiliNUT
2

Sarankan menggunakan cuplikan berikut. Bekerja dengan baik bahkan dengan tabel besar (jika tidak, Anda akan membuka dump di editor dan menghapus hal-hal yang tidak dibutuhkan, kan?;)

mysqldump --no-create-info --skip-triggers --extended-insert --lock-tables --quick DB TABLE > dump.sql

Setidaknya mysql 5.x diperlukan, tetapi siapa yang menjalankan barang-barang lama saat ini .. :)

Wuzer
sumber
Saya mengalami situasi baru-baru ini, di mana harus terhubung ke sistem yang menggunakan 4.x dalam produksi. Mereka memiliki ruang dalam nama tabel dan kolom, dan menurut saya, pada dasarnya mereka melakukan semua yang salah.
Elkvis
0

Cobalah untuk membuang ke file yang dibatasi.

mysqldump -u [username] -p -t -T/path/to/directory [database] --fields-enclosed-by=\" --fields-terminated-by=,
ed209
sumber
0

Ketika mencoba mengekspor data menggunakan jawaban yang diterima saya mendapat kesalahan:

ERROR 1235 (42000) at line 3367: This version of MySQL doesn't yet support 'multiple triggers with the same action time and event for one table'

Seperti disebutkan di atas:

mysqldump --no-create-info

Akan mengekspor data tetapi juga akan mengekspor pernyataan pemicu buat. Jika seperti saya, struktur basis data keluaran Anda (yang juga termasuk pemicu) dengan satu perintah dan kemudian menggunakan perintah di atas untuk mendapatkan data, Anda juga harus menggunakan '--skip-trigger'.

Jadi jika Anda ingin HANYA data:

mysqldump --no-create-info --skip-triggers
Ben Waine
sumber