쿼리별 MySQL 덤프
할 수 있을까요?mysqldump
단신으로SQL query
?
데이터베이스 전체를 폐기하고phpmyadmin
로 내보내면 이 실행됩니다.SQL
mysqldump는 아니지만 mysql cli...
mysql -e "select * from myTable" -u myuser -pxxxxxxxxx mydatabase
필요에 따라서, 파일을 리다이렉트 할 수 있습니다.
mysql -e "select * from myTable" -u myuser -pxxxxxxxx mydatabase > mydumpfile.txt
업데이트: 원본 게시물이 쿼리를 통해 데이터베이스에서 덤프할 수 있는지 물어봅니다.그가 물어본 것과 그가 의미하는 것은 달랐다.그는 정말로 모든 테이블을 myqldump하고 싶어했다.
mysqldump --tables myTable --where="id < 1000"
이거면 될 것 같아
mysqldump --databases X --tables Y --where="1 limit 1000000"
where 쿼리를 사용하여 테이블을 덤프합니다.
mysqldump mydatabase mytable --where="mycolumn = myvalue" --no-create-info > data.sql
전체 테이블 덤프:
mysqldump mydatabase mytable > data.sql
주의:
- 교체하다
mydatabase
,mytable
및 원하는 값을 가진 where 문을 지정합니다. - 디폴트로는
mysqldump
포함되다DROP TABLE
그리고.CREATE TABLE
출력에 기재되어 있습니다.따라서 저장된 데이터 파일에서 복원할 때 테이블의 모든 데이터를 삭제하지 않으려면--no-create-info
선택. - 적절한 추가가 필요할 수 있습니다.
-h
,-u
,그리고.-p
위의 명령어 예에 대한 옵션을 지정하여 원하는 데이터베이스 호스트, 사용자 및 비밀번호를 각각 지정합니다.
다음과 같이 쿼리를 csv로 덤프할 수 있습니다.
SELECT * from myTable
INTO OUTFILE '/tmp/querydump.csv'
FIELDS TERMINATED BY ','
ENCLOSED BY '"'
LINES TERMINATED BY '\n'
mysqldump의 --where 옵션을 사용하여 대기 중인 출력을 생성할 수 있습니다.
mysqldump -u root -p test t1 --where="1=1 limit 100" > arquivo.sql
test.t1에서 최대 100개의 행이 데이터베이스 테이블에서 덤프됩니다.
마지막 n개의 레코드를 파일로 내보내는 경우 다음을 실행할 수 있습니다.
mysqldump -u user -p -h localhost --where "1=1 ORDER BY id DESC LIMIT 100" database table > export_file.sql
위의 예에서는 내보내는 테이블에 자동 증가 ID 열이 있는 경우 export_file.sql에 마지막 100개의 레코드가 저장됩니다.
사용자, 로컬 호스트, 데이터베이스 및 테이블 값을 변경해야 합니다.선택적으로 id 열 및 내보내기 파일 이름을 변경할 수 있습니다.
MySQL Workbench도 GUI에 깔끔하게 이 기능이 있습니다.쿼리를 실행하면 내보내기/가져오기 옆의 저장 아이콘을 클릭합니다.
그런 다음 목록에서 "SQL INSERT 문(*.sql)"을 선택합니다.
이름을 입력하고 저장을 클릭한 후 테이블 이름을 확인하면 덤프 파일이 나타납니다.
위의 많은 부분을 조합한 것이 meterid와 timestamp를 모두 기준으로 레코드를 선택하는 나의 실제 사례입니다.몇 년 동안 이 명령어가 필요했어요실행 속도가 매우 빠릅니다.
mysqldump -uuser -ppassword main_dbo trHourly --where="MeterID =5406 AND TIMESTAMP<'2014-10-13 05:00:00'" --no-create-info --skip-extended-insert | grep '^INSERT' > 5406.sql
mysql 쿼리 결과 명령줄 내보내기:
mysql -h120.26.133.63 -umiyadb -proot123 miya -e "select * from user where id=1" > mydumpfile.txt
테이블에서 특정 필드를 덤프하려면 이 방법이 편리합니다.
1/ 쿼리로 임시 테이블을 만듭니다.
create table tmptable select field1, field2, field3 from mytable where filter1 and fileter2 ;
2/ 임시 테이블 전체를 덤프합니다.그러면 특정 필드가 포함된 덤프 파일이 생성됩니다.
mysqldump -u user -p mydatabase tmptable > my-quick-dump.sql
특정 테이블을 덤프하려면
mysqldump -u root -p dbname -t tablename --where="id<30" > post.sql
다른 테이블에서 동일한 관계를 선택하기 위한 mysqldump는 다음과 같습니다.
mysqldump --defaults-file=~/.mysql/datenbank.rc -Q -t -c --hex-blob \
--default-character-set=utf8 --where="`cat where-relation-ids-in.sql`" \
datenbank table01 table02 table03 table04 > recovered-data.sql
where-time-ids-in.sql:
relation_id IN (6384291, 6384068, 6383414)
~/.datenbank/datenbank.rc
[client]
user=db_user
password=db_password
host=127.0.0.1
비고: relation_id 파일이 클 경우 where 구에 대한 코멘트는 덤프 파일에서 잘리지만 모든 데이터가 올바르게 선택됩니다;-)
누군가에게 도움이 되었으면 좋겠다;-)
언급URL : https://stackoverflow.com/questions/935556/mysql-dump-by-query
'sourcecode' 카테고리의 다른 글
Android 5.0 - Recycleer View에 머리글/바닥글 추가 (0) | 2022.11.07 |
---|---|
Python Anaconda - 안전하게 제거하는 방법 (0) | 2022.11.07 |
현재 JBoss 또는 Glassfish(또는 다른)를 새 프로젝트의 Java EE 서버로 사용하시겠습니까? (0) | 2022.11.07 |
Python에서 목록을 태플로 변환 (0) | 2022.11.07 |
pg_config 실행 파일을 찾을 수 없습니다. (0) | 2022.11.07 |