2017-12-11 2 views
0

_backup이라는 단어가 포함 된 데이터베이스 이름을 제외하고 mysql 서버의 모든 데이터베이스 이름의 이름을 갖고 싶습니다.grep을 사용하여 특정 데이터베이스를 필터링하는 방법

지금까지이 작업을 수행하면 데이터베이스의 모든 이름이 텍스트 파일로 제공됩니다. 이것은 centos OS 환경에서 실행됩니다.

mysql -uroot -pxpwdx -e 'show databases' | tr -d "| " | grep -v Database | grep -v information_schema | grep -v performance_schema | grep -v mysql > database.txt 

"_backup"이 (가) 포함되지 않도록 편집해야합니까?

예 : 내 MySQL 서버 5 데이터베이스를 포함 말할 A) db001 b는) db001_backup20170602 C) DB002 D) db003 전자) db003_backup2017Aug

I만을 원하는의 (a), (c) 및 (d)를 database.txt 파일에 나열하십시오.

감사합니다.

이 그것에 "백업"없이 모든 데이터베이스를 줄 것이다

mysql -uroot -pxpwdx -e "SELECT `schema_name` from INFORMATION_SCHEMA.SCHEMATA WHERE `SCHEMA_NAME` NOT LIKE '%backup%';" 

당신은 그것을에서 "백업"을하지 않고 모든 데이터베이스를 얻기 위해이 쿼리를 사용할 수 있습니다

+0

'그렙 -v _backup'에 여러 문자열을 grep으로하는 조항을 줄 것이다 grep-Ev 옵션? – salparadise

+0

@salparadise - 내가 게시 한 진술이 의미하는 바를 나에게 알려준 것에 감사드립니다. 나는 다른 곳에서 코드를 복사했지만 작동하지만 이해하지 못했습니다. 이제 database, information_schema, performance_schema 및 mysql을 포함하는 이름을 가진 데이터베이스가 텍스트 파일에 들어 가지 않음을 알게되었습니다. 그래서 내가 필요한 것은 추가 grep -v _backup뿐입니다. –

답변

2

솔루션,

mysql -uroot -pxpwdx -sse "SELECT schema_name from information_schema.schemata WHERE schema_name NOT LIKE '%_backup%' or schema_name NOT LIKE '%schema%';" 

배쉬 솔루션, 표시 테이블 명령,

mysql -uroot -pxpwdx -sse "show databases;" | grep -Ev '_backup|schema|mysql' 

노트와

대신옵션을 사용하면 헤더, 열 등을 제외하고 값만 출력합니다.

하나의 문

+0

(1) 내가 원했던 원칙을 얻고 (2) '_backup | schema | mysql'을 사용하여 코드를 단축하는 방법을 공유하고 (3) 무엇을 더 잘 이해할 수 있도록 안내해 주셔서 대단히 감사합니다. 코드가 않습니다. –

+0

당신을 도울 수있어서 기쁩니다 (Y). . 감사 –

1

는, 당신은 GREP을 할 필요가 없습니다. MySQL의 문을

+0

귀하의 답변은 말 그대로 백업을 제외한 모든 데이터베이스입니다. 하지만 정확히 내가 마음에 무엇을 염두에두고 있었는지 (내 설명에 잘못이 있음을 유감스럽게 생각합니다. 정확히 원하는 내용과 내 설명을 지정하지 않았습니다. 모두 데이터베이스 및 코드 "| grep -v 데이터베이스 | grep -v 정보 _schema | grep -v 성능 _schema | grep -v mysql "이 조화를 이루지 않는 것 같습니다). 실제로 나는 mysql과 스키마 데이터베이스 같은 비 사용자 생성 데이터베이스를 원하지 않았습니다. –

관련 문제