MYSQL Dump только определенные строки


97

Я пытаюсь сделать дамп mysql нескольких строк в моей базе данных. Затем я могу использовать дамп для загрузки этих нескольких строк в другую базу данных. Код у меня работает, но все сбрасывает. Как я могу заставить mysqldump выгружать только определенные строки таблицы?

Вот мой код:


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

Ответы:


143

Просто поправьте свой --whereвариант. Это должно быть действительное предложение SQL WHERE, например:

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

У вас есть имя столбца вне кавычек.


1
Спасибо сделал именно то, что мне нужно. Спасибо вам за помощь!
Шаттак,

@AJ, отличная информация! Благодарность!
Роман Ньюаза

2
Для условия IN мы можем просто использовать --where="id IN(1,2,6,10)". Где id - столбец в таблице. Ссылка --where
Йогеш

9
Просто примечание для любого, как я, использующего это для передачи большого дампа данных на другой сервер, который сломался посередине, если вы не укажете --no-create-infoвместе с предложением where, новый дамп воссоздает таблицу и удалит уже переданные данные! Может быть очевидно, но это поймало меня дважды.
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
Есть еще один способ использования такого запроса: CREATE TABLE 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.