>  기사  >  시스템 튜토리얼  >  (일일질문) mysql 데이터베이스 일괄 실행을 위한 솔루션 아이디어

(일일질문) mysql 데이터베이스 일괄 실행을 위한 솔루션 아이디어

WBOY
WBOY앞으로
2024-03-02 09:31:18619검색

1. 개요

응용 시나리오: 많은 mysql 파일을 일괄적으로 실행해야 합니다. mysql 데이터베이스의 sql 파일을 하나씩 실행하는 것은 너무 시간이 많이 걸립니다.

디버깅 환경: 로컬 Windows 10, 실행될 데이터베이스는 LAN의 centos 서버에 있습니다.

Mysql은 로컬에 설치해야 합니다. 내 버전은 mysql5.7입니다.

MYSQL 다운로드:

linux 批量执行脚本_linux批量执行的脚本_批量操作linux

리눅스 환경변수를 다운로드 받아 설치한 후 환경변수에 경로를 추가하면 이전에 사용했던 mysql 명령어를 사용할 수 있습니다.

1. Windows 명령줄이 mysql 명령을 지원하는지 확인하세요

명령줄을 사용하여 cmd에서 mysql에 로그인합니다. "내부 또는 외부 명령이 아닙니다"라는 메시지가 표시되면 이를 구성해야 합니다

image.png

批量操作linux_linux 批量执行脚本_linux批量执行的脚本

mysql 설치 디렉터리 아래의 bin 디렉터리를 시스템 변수에 추가해야 합니다. Baidu 작동 방법을 알아보세요.

구성이 완료된 후 cmd를 다시 열고 mysql 명령줄을 직접 사용하세요.

2. 솔루션 아이디어 3. 구체적인 구현

1. 디렉터리를 탐색하여 새로운 일괄 실행 SQL 파일인 Batch.sql

을 생성합니다.

루트 디렉터리에 새 sqlscripts 폴더를 만들고 실행할 모든 스크립트를 sqlscripts 폴더에 로드합니다. 일괄 처리 명령이 순회되어 새 sql에 추가됩니다.

linux 批量执行脚本_linux批量执行的脚本_批量操作linux

2. 새로운 createsql.bat를 생성하세요

루트 디렉터리에 새 txt 파일을 만들고 이름을 creatsql.bat로 변경한 후 다음 내용을 복사합니다. 이 일괄 프로세스를 순회하여 bat.sql에 순차적으로 추가합니다.

으아악

참고: 테스트 중에 인코딩 문제가 발생하여 모든 배치 파일을 메모장++로 편집하고 인코딩 형식을 utf-8 대신 ANSI로 변경했습니다.

3. 새로운 update.bat를 생성하세요

루트 디렉터리에 새 txt 파일을 만들고 이름을 update.bat로 바꾼 후 다음 내용을 복사하세요. 이 배치 프로세스는 데이터베이스에 연결하고 새로 생성된 Batch.sql 파일을 실행합니다.

으아악

참고: 이 배치 linux 배치 실행 스크립트에서 호스트, 데이터베이스 이름/비밀번호 및 기타 정보와 같은 변수 값을 변경해야 합니다.

4. 일괄 처리 실행

createsql.bat를 실행시켜서 bat.sql이 제대로 실행되었는지 확인합니다. Update.bat가 정상적으로 실행되는지 확인합니다. 4. 구체적인 구현 방안 2

刚才介绍的思路是分为两步,先遍历并整合成一个sql脚本去执行。似乎还有一种方法就是逐字遍历的时侯linux 批量执行脚本,每取出一条就去执行一条。这样写一个批处理就可以搞定了。

具体实现:

新建update_each.bat,内容如下

::echo off
@echo off
:: 指定MySQL安装路径
:: C:
:: cd C:Program FilesMySQLMySQL Server 5.7bin
:: 数据库主机
@set host=192.10.120.101
:: 数据库名称
@set db=test
:: 用户名
@set userName=root
:: 密码
@set password=123456
:: 获取文件夹所在绝对路径
@set basePath=%~dp0
:: 要执行的sql脚本
@set sqlpath=%basePath%all.sql
echo 开始执行数据库脚本...
for %%i in (sqlscripts*.sql) do (
echo 正在执行 %%i 请稍后...
echo set names utf8;>all.sql
echo source %%i>>all.sql
:: 连接MySQL数据库并执行sql脚本 -f 脚本执行过程中,出现错误继续执行 --default-character-set指定导入数据的编码(与数据库编码相同)
mysql -f -h %host% -u %userName% --password=%password% %db% < %sqlpath% --default-character-set=gbk
echo %%i 执行完毕。
)
del all.sql
echo 所有脚本执行完毕。
pause

非常提示编码问题suse linux 下载,批处理命令是ANSI编码格式;sql脚本是UTF-8编码格式。

结束

위 내용은 (일일질문) mysql 데이터베이스 일괄 실행을 위한 솔루션 아이디어의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
이 기사는 itcool.net에서 복제됩니다. 침해가 있는 경우 admin@php.cn으로 문의하시기 바랍니다. 삭제