MYSQL Zrzuca tylko niektóre wiersze


97

Próbuję zrobić zrzut mysql kilku wierszy w mojej bazie danych. Następnie mogę użyć zrzutu, aby przesłać te kilka wierszy do innej bazy danych. Kod, który mam, działa, ale wszystko zrzuca. Jak mogę zmusić mysqldump do zrzucania tylko niektórych wierszy tabeli?

Oto mój kod:


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

Odpowiedzi:


143

Po prostu napraw swoją --whereopcję. Powinna to być poprawna klauzula SQL WHERE, na przykład:

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

Masz nazwę kolumny poza cudzysłowami.


1
Dziękuję, zrobiłem dokładnie to, czego potrzebowałem. Dziękuję za pomoc!
Shattuck

@AJ, świetne informacje! Dzięki!
Roman Newaza

2
Dla IN stanie, możemy po prostu użyć --where="id IN(1,2,6,10)". Gdzie id to kolumna w tabeli. Ref --where
Yogesh

9
Tylko uwaga dla każdego takiego jak ja, używającego tego do przesłania dużego zrzutu danych do innego serwera, który zepsuł się w środku, jeśli nie określisz --no-create-inforazem z klauzulą ​​where, nowy zrzut odtworzy tabelę i usunie już przesłane dane! To może być oczywiste, ale teraz złapało mnie to dwukrotnie.
georgiecasey

Zwróć uwagę, że problemem nie było to, że nazwa kolumny jest poza cudzysłowami. To jest polecenie powłoki, więc musisz napisać składnię powłoki dla łańcucha date_pulled='2011-05-23'. Oznacza to, że musisz cytować lub zmieniać znaczenie pojedynczych znaków cudzysłowu, więc są one zawarte w ciągu znaków, a nie są interpretowane jako cudzysłowy w składni powłoki. Dodanie podwójnych cudzysłowów wokół całej rzeczy robi to, ale tak samo by się stało --where=date_pulled="'2011-05-23'"( --where=date_pulled=\'2011-05-23\'lub nawet --where=date_pulled"'"2011-05-23"'").
Ben

32

Musisz zacytować klauzulę „gdzie”.

Próbować

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

1
To było dokładnie to, czego potrzebowałem. Inna osoba odpowiedziała tuż przed tobą i ja wybrałem jego odpowiedź, ale zagłosowałem za twoją pomocą.
Shattuck

1
Zapytanie można wykorzystać w inny sposób: CREATE TABLE new_table AS (SELECT * FROM myResumes WHERE gdzie = date_pulled = '2011-05-23'); Następnie możesz po prostu wyeksportować tę tabelę przez mysqldump.
Vinayagam

1

Użyj tego kodu dla określonych wierszy tabeli, używając warunku LIKE.

mysqldump -u root -p sel_db_server case_today --where="date_created LIKE '%2018
%'" > few_rows_dump.sql
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.