在Docker镜像中导入.sql文件

时间:2018-01-04 09:43:30

标签: mysql docker

我在Docker镜像(官方MySQL镜像)中导入.sql文件时遇到问题。我对他们两个都比较新,但这是我迄今为止所取得的成就:

  1. 当我尝试从Docker镜像中导入文件时,我使用: 'USE DATABASE test;'然后source data.aktualnosci.sql,但使用此路径和Docker卷文件夹的其他各种相对路径(我可以存储文件)只会产生Failed to open file

  2. 当我在文件所在文件夹中的图片外执行此操作时:docker exec -i some-mysql mysql -uroot -pmy-secret-pw data < data.aktualnosci.sql会生成ERROR 1146 (42S02) at line 21: Table 'data.aktualnosci' doesn't exist

  3. 当我创建该表时,使用第1个项目符号点中的命令不会抛出任何错误,但我收到此错误:ERROR 1136 (21S01) at line 23: Column count doesn't match value count at row 1

  4. 当我创建表格并放入内部即两个随机列时,则没有错误,但表格为空。

  5. 因此,每次我领先时都有另一个问题。我有40个表要导入 - 我确信有一种方法可以顺利完成。

3 个答案:

答案 0 :(得分:2)

根据MySQL image documentation

  

第一次启动容器时,使用新的数据库   将使用提供的名称创建和初始化指定的名称   配置变量。此外,它将执行文件   在。中找到的扩展名.sh,.sql和.sql.gz   /docker-entrypoint-initdb.d

因此,如果您希望使用SQL数据初始化容器,它就像:

一样简单
docker run -d --name mysql57 -p 3306:3306 \
-e MYSQL_ROOT_PASSWORD=password \
-e MYSQL_DATABASE=db_name \
-v /path/to/your/dump.sql:/docker-entrypoint-initdb.d/init.sql \
mysql:5.7

答案 1 :(得分:0)

答案 2 :(得分:0)

我终于找到了方法:首先必须导入docker exec -i some-mariadb mysql -uroot -pmy-secret-pw test < table.aktualnosci.sql因为它包含架构,然后在创建带有架构的表时导入data.aktualnosci.sql

感谢您的耐心等待。只是不知道数据是从数据中单独转储的。