커맨드 라인에서 mysql을 통해 단일 쿼리를 어떻게 실행합니까?


157

스크립트 작업의 원격 서버에서 단일 쿼리를 실행할 수 있기를 원합니다.

예를 들어, 직관적으로, 나는 그것이 다음과 같이 갈 것이라고 상상할 것입니다 :

mysql -uroot -p -hslavedb.mydomain.com mydb_production "select * from users;"

답변:


249
mysql -u <user> -p -e "select * from schema.table"

3
C : \ Program Files (x86) \ MySQL \ MySQL Server 5.7 \ bin> mysql.exe -u root -p -e "my query"----> ERROR 1045 (28000) : 사용자 'root'@에 대한 액세스가 거부되었습니다 @ 'localhost'(암호 사용 : YES)
Dr.jacky

2
이것은 거대한 mysql 사이트가 아닌 Google 검색 ( "mysql exec sql from command line")의 첫 번째 결과입니다!
기 illa 부아

4
또한 헤더 및 테이블 형식을 제거하려면 다음을 사용할 수 있습니다.mysql -u <user> -p -B --disable-column-names -e 'select * from schema.table'
dvlcube

2
@tinybyte Linux 가정 : Insinde는 큰 따옴표를 사용하여 별표 *가 현재 디렉토리의 모든 파일로 확장되는 반면,이 확장은 작은 따옴표로 표시 되지 않으므로 그 이유가 있습니다. 따옴표없이 큰 따옴표를 사용할 수 *있습니다.
NobbZ

2
@ Dr.jacky 나는 당신이 정말로 더 이상 필요가 없다고 확신하지만, 앞으로 루트 사용자가 암호를 가지고 있지 않다면 -p 옵션을 비워 mysql.exe -u root -e "my query"
두지 말고

29
mysql -uroot -p -hslavedb.mydomain.com mydb_production -e "select * from users;"

사용법 출력에서 ​​:

-e, --execute=name
명령을 실행하고 종료하십시오. (장애 --force및 기록 파일)


15

멋진 쉘 트릭으로 수행하는 방법은 다음과 같습니다.

mysql -uroot -p -hslavedb.mydomain.com mydb_production <<< 'select * from users'

'<<<'는 쉘이 에코에서 파이핑하는 것과 유사하게 그 뒤에 오는 것을 stdin으로 가져 가도록 지시합니다.

-t 플래그를 사용하여 테이블 형식 출력을 사용 가능하게하십시오.


13

자주 실행하는 쿼리 인 경우 파일에 저장할 수 있습니다. 그런 다음 언제든지 실행하려고합니다 .

mysql < thefile

(물론 모든 로그인 및 데이터베이스 플래그 포함)


6
echo "select * from users;" | mysql -uroot -p -hslavedb.mydomain.com mydb_production
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.