셸 스크립트를 사용하여 여러 MySQL 명령을 실행하는 더 나은 방법
여러 MySQL 명령을 실행하기 위해 *.sh 스크립트를 작성하고자 합니다.
현재 제가 할 수 있는 것은 다음과 같은 것입니다.
mysql -h$host -u$user -p$password -e "drop database $dbname;"
mysql -h$host -u$user -p$password -e "create database $dbname;"
mysql -h$host -u$user -p$password -e "another MySQL command"
...
타이핑을 피할 수 있는 방법이 있습니까?mysql -h$host -u$user -p$password -e
내가 MySQL 명령을 실행하고 싶을 때마다?
예를 들어 텍스트 파일에서 MySQL 문을 실행할 수 있다고 생각합니다.
여기 cmds 입니다.MySQL 명령을 포함하는 txt 파일:
select colA from TableA;
select colB from TableB;
select colC from TableC;
셸 스크립트를 사용하여 실행하려면 다음을 입력합니다.
mysql -h$host -u$user -p$password db_dbname < cmds.txt
이렇게 하면 셸 스크립트에서 MySQL 명령을 분리할 수 있습니다.
스크립트에 진행 상황 정보가 표시되도록 할 수도 있습니다.이 경우 "--verbose" 옵션을 사용하여 mysql을 호출할 수 있습니다.
자세한 정보는 https://dev.mysql.com/doc/refman/5.6/en/mysql-batch-commands.html 을 참조하십시오.
단일 다중 쿼리를 사용할 수 있습니다.
mysql -h$host -u$user -p$password -e "drop database $dbname;create database $dbname;another MySQL command;"
모든 쿼리를 다음과 같이 구분하여 쓰기만 하면 됩니다.;
. 그들은 차례로 운영될 것입니다.
또한 HERE 문서를 사용하여 동일한 스크립트 내의 쿼리를 가질 수도 있습니다.
mysql -h$host -u$user -p$password db_dbname <<'EOF'
select colA from TableA;
select colB from TableB;
select colC from TableC;
EOF
제가 사용한 노트'EOF'
보다는EOF
매개 변수 대체를 비활성화하는 스크립트의 내용을 방지하기 위해 첫번째 줄에 있습니다(특히,`
문제가 있을 수 있음)
또한 결승전 전에는 공백이 없어야 합니다(단, 다음을 사용하는 경우는 제외)<<-
보다는<<
-- 선두 탭 문자가 제거되는 경우):
mysql -h$host -u$user -p$password db_dbname <<- 'EOF'
↠select colA from TableA;
↠select colB from TableB;
↠select colC from TableC;
↠EOF
(교체)↠
탭 문자로 표시).
HERE doc 구문에 대한 자세한 내용은 bash 설명서를 참조하십시오.
리눅스에는 여러 가지 방법이 있습니다.
mysql cli에서:
mysql> source mycmds.sql
파이프 사용:
echo "SELECT ..; INSERT ..;" | mysql ...
파이프 또는 리디렉션을 사용하여 파일에서 명령 실행:
cat file.sql | mysql ... OR mysql .. < file.sql
반복을 줄이는 다른 답변과는 다르지만,
옵션(사용자, 호스트...)을 줄이는 방법이 있습니다.-u
,-p
,-h
...) 각 줄 명령에서
내가 아는 2가지 방법.
1. 쓰임새my.cnf
파일
사용자 정보를 옵션 파일(예: ~/.my.cnf 등)에 저장할 수 있습니다.
[client]
user=your_username
password=your_password
# database=database_name
그럼 그냥 달리면 됩니다.mysql
하나의 옵션으로 명령-e
조회합니다.
mysql -e "drop database $dbname;"
mysql -e "create database $dbname;"
mysql -e "another MySQL command"
2. 쓰임새mysql_config_editor
로그인 정보를 저장할 수 있습니다.mysql_config_editor
mysql_config_editor set --login-path=mypath1 --host=localhost --user=root --password
login-path 옵션을 사용하여 명령 실행
mysql --login-path=mypath1 -e "drop database $dbname;"
mysql --login-path=mypath1 -e "create database $dbname;"
mysql --login-path=mypath1 -e "another MySQL command"
언급URL : https://stackoverflow.com/questions/32869275/a-better-way-to-execute-multiple-mysql-commands-using-shell-script
'programing' 카테고리의 다른 글
각도를 분할하는 방법JS를 작은 모듈에 적용하고 라우팅을 올바르게 처리합니까? (0) | 2023.11.04 |
---|---|
저장 프로시저에서 파라미터를 검색하시겠습니까? (0) | 2023.11.04 |
로그인 재연결 후 wocommerce (0) | 2023.11.04 |
기본 게시물의 영구 링크를 변경하는 방법? (0) | 2023.11.04 |
C Macro - 정수 값을 문자열 리터럴로 가져오는 방법 (0) | 2023.11.04 |