v2ex_com
校友
校友
  • UID186
  • 粉丝1
  • 关注7
  • 发帖数46
  • 社区居民
  • 忠实会员
阅读:787回复:1

Mysql综合实战之统计分析优化套路篇 第一课 导入数据到MySQL的坑

楼主#
更多 发布于:2019-03-02 18:30
第一次用docker导这种数据的时候就遇到了,

ERROR at line 113: Failed to open file 'load_departments.dump', error: 2
解决方法如下:
https://github.com/datacharmer/test_db/issues/9

最新喜欢:

2012arsenal2012ar...
v2ex_com
校友
校友
  • UID186
  • 粉丝1
  • 关注7
  • 发帖数46
  • 社区居民
  • 忠实会员
沙发#
发布于:2019-03-03 00:54
两种方法


一种直接进容器导入数据

docker run --rm --name mysqld \
-p 3306:3306 \
-v /home/sean/dockerdev/web/mysql/conf:/etc/mysql/conf.d \ #挂载配置文件
-v /home/sean/dockerdev/web/mysql/data:/var/lib/mysql \ #挂载数据目录 -v /home/sean/code/databases/test_db:/data \ #将数据集挂载到容器里 -e MYSQL_ROOT_PASSWORD=123456 \
-d mysql:5.7.23

然后 exec 进入容器,cd 到容器的 /data 目录,执行
mysql -uroot -p123456
> use employees # 这里已经提前创建了 employees 数据库
> source ./employees.sql
...


第二种方式 使用mysql-client导入

mysql-client Dockerfile


FROM alpine:latest
RUN apk add --no-cache mysql-client
ENTRYPOINT ["mysql"]



构建mysql-client镜像
docker build -t mysqlcli:1.0 .

然后在此基础上再叠加一个用于导数据的容器


FROM mysqlcli:1.0
ENV mysql_user root
ENV mysql_pass 123456
ENV mysql_host 192.168.16.137
ENV mysql_db employees
VOLUME ["/data"]
WORKDIR /data
ENTRYPOINT mysql -h$mysql_host -u$mysql_user -p$mysql_pass $mysql_db < $mysql_db.sql --default-character-set=utf8



构建镜像

docker build -t mysqldump:1.1 .


然后执行下这条命令,就导入完成了

docker run -it --name dump --rm -v /home/sean/code/databases/test_db:/data  mysqldump:1.1 /bin/sh
游客

返回顶部