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
내가 필요한 것을 정확히 해주셔서 감사합니다. 도와 줘서 고마워!
Shattuck

@AJ, 훌륭한 정보! 감사!
Roman Newaza

2
들어 IN의 조건, 우리는 간단하게 사용할 수 있습니다 --where="id IN(1,2,6,10)". 어디 ID는 테이블의 컬럼입니다. Ref --where
Yogesh

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

"where"절을 인용해야합니다.

시험

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

1
그것이 바로 제가 필요로하는 것입니다. 다른 사람이 당신 직전에 대답했고 나는 그의 대답을 선택했지만 도움을 요청했습니다.
Shattuck

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
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.