MYSQL yalnızca belirli satırları döker


97

Veritabanımda birkaç satırın mysql dökümü yapmaya çalışıyorum. Daha sonra bu birkaç satırı başka bir veritabanına yüklemek için dökümü kullanabilirim. Sahip olduğum kod çalışıyor, ama her şeyi döküyor. Bir tablonun yalnızca belirli satırlarını dökmek için mysqldump'ı nasıl elde edebilirim?

İşte kodum:


mysqldump --opt --user=username --password=password lmhprogram myResumes  --where=date_pulled='2011-05-23' > test.sql

Yanıtlar:


143

Sadece --whereseçeneğinizi düzeltin . Aşağıdaki gibi geçerli bir SQL WHERE yan tümcesi olmalıdır:

--where="date_pulled='2011-05-23'"

Tırnakların dışında sütun adı var.


1
Teşekkürler tam olarak ihtiyacım olanı yaptım. Yardım için teşekkürler!
Shattuck

@AJ, harika bilgi! Teşekkürler!
Roman Newaza

2
IN koşulu için kullanabiliriz --where="id IN(1,2,6,10)". Nerede id tablosundaki sütundur. Ref --where
Yogesh

9
Benim gibi büyük bir veriyi ortada kırılan başka bir sunucuya yönlendirmek için bunu kullanan birine bir not yeter, eğer where cümlenizle --no-create-infobirlikte belirtmezseniz , yeni döküm tabloyu yeniden oluşturacak ve zaten aktarılan verileri silecektir! Belli olabilir ama şimdi beni iki kez yakaladı.
georgiecasey

Sorunun, sütun adının tırnak işaretlerinin dışında olması olmadığını unutmayın. Bu bir kabuk komutudur, bu nedenle dizge için kabuk sözdizimi yazmanız gerekir date_pulled='2011-05-23'. Bu, tek tırnak karakterlerini tırnak içine almanız veya onlardan kaçmanız gerektiği anlamına gelir, böylece kabuk söz diziminde tırnak işareti olarak yorumlanmak yerine dizeye dahil edilirler. Her şeyin çevresine çift tırnak işareti eklemek bunu yapar, ancak öyle --where=date_pulled="'2011-05-23'"(veya --where=date_pulled=\'2011-05-23\', hatta --where=date_pulled"'"2011-05-23"'").
Ben

32

"Nerede" cümlesini alıntı yapmanız gerekir.

Deneyin

mysqldump --opt --user=username --password=password lmhprogram myResumes  --where="date_pulled='2011-05-23'" > test.sql

1
Tam da ihtiyacım olan buydu. Senden hemen önce başka biri cevap verdi ve ben onun cevabını seçtim, ama yardım için senden oy verdim.
Shattuck

1
Sorguyu kullanmanın başka bir yolu daha var: CREATE TABLE new_table AS (SELECT * FROM myResumes WHERE nerede = date_pulled = '2011-05-23'); Daha sonra bu tabloyu mysqldump aracılığıyla dışa aktarabilirsiniz.
Vinayagam

1

LIKE koşulunu kullanarak belirli tablo satırları için bu kodu kullanın.

mysqldump -u root -p sel_db_server case_today --where="date_created LIKE '%2018
%'" > few_rows_dump.sql
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.