MYSQL Дамп лише певних рядків


96

Я намагаюся зробити mysql-дамп із декількох рядків у своїй базі даних. Потім я можу використовувати дамп для завантаження цих кількох рядків в іншу базу даних. Код у мене працює, але він все скидає. Як я можу змусити mysqldump лише скидати певні рядки таблиці?

Ось мій код:


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

Відповіді:


142

Просто виправте свій --whereваріант. Це має бути дійсним пунктом SQL WHERE, наприклад:

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

У вас є назва стовпця поза цитатами.


1
Спасибі зробили саме те, що мені було потрібно. Дякую за допомогу!
Шаттак,

@AJ, чудова інформація! Дякую!
Роман Ньюаза

2
Для стану IN ми можемо просто використовувати --where="id IN(1,2,6,10)". Де ідентифікатор - стовпчик у таблиці. Посилання --where
Йогеш

9
Просто зауваження будь-кому, як я, використовуючи це для передачі великого дампа даних на інший сервер, який зламався посередині, якщо ви не вкажете --no-create-infoразом із вашим пунктом де, новий дамп відтворить таблицю та видалить уже передані дані! Можливо, це буде очевидно, але це мене вже двічі спіймало.
georgiecasey

Зауважте, що проблема полягала не в тому, що назва стовпця знаходиться поза лапками. Це команда оболонки, тому вам потрібно написати синтаксис оболонки для рядка date_pulled='2011-05-23'. Це означає, що вам потрібно цитувати або уникати окремих символів цитати, тому вони включаються в рядок, а не інтерпретуються як лапки в синтаксисі оболонки. Додавання подвійних лапок навколо всієї справи це робить, але так би було --where=date_pulled="'2011-05-23'"(або --where=date_pulled=\'2011-05-23\', або навіть --where=date_pulled"'"2011-05-23"'").
Бен

32

Потрібно процитувати пункт «де».

Спробуйте

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

1
Це було саме те, що мені потрібно. Інша людина відповіла прямо перед вами, і я вибрав його відповідь, але підтримав вас за допомогу.
Шаттак,

1
Є ще один спосіб використання такого запиту: СТВОРИТИСЯ ТАБЛИЦЮ new_table AS (SELECT * FROM myResumes WHERE where = date_pulled = '2011-05-23'); Тоді ви можете просто експортувати цю таблицю через mysqldump.
Vinayagam

1

Використовуйте цей код для певних рядків таблиці, використовуючи умову LIKE.

mysqldump -u root -p sel_db_server case_today --where="date_created LIKE '%2018
%'" > few_rows_dump.sql
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.