教你写一个一键建库并且批量导入sql脚本的批处理文件

小Z:数据库怎么执行sql脚本啊?我只会复制脚本文件里的代码再贴进去执行。
小C:点这个再点那个就行了。
小Z:我这有几十个sql脚本咋办?
小C:一个一个点呗。

那么有没有点一下就能导入全部脚本的方法呢?
在这里插入图片描述

废话不多说,直接上代码。

@echo off
rem change cmd to unicode
chcp 65001
set DatabaseName=aaab
call mysql -uroot -p -e "create database %DatabaseName%"
rem list all sql in this file and execute them
for %%a in (.\*.sql) do (
mysql -u【账户名】 -p【密码名】 %DatabaseName% <%%a
)
pause

代码讲解:
1.首先我们需要知道编码的问题,批处理文件也就是以.bat或者.cmd结尾的文件是运行在cmd环境中的。这里就有一个问题,cmd环境默认的编码格式是ANSI的,但往往咱们设置的数据库比如Mysql编码格式一般是utf-8,所以如果我们直接运行批处理文件,sql脚本里存在字符串,那么查看数据库就会出现乱码。解决这个问题方法也很简单:我们把cmd的编码格式换成utf-8即可。
chcp 65001 即为更改当前cmd窗口的编码格式为utf-8。
2.call命令是为了调用一个mysql的建库脚本,库的名字由set命令后面声明的变量DatabaseName决定。
3.for语句的目的是为了遍历当前目录下的所有sql文件并且将其写入声明的数据库。
4.pause是为了暂停这个cmd窗口,让咱能欣赏下代码执行。


版权声明:本文为qq_42936379原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。