将csv文件导入mysql docker容器

时间:2019-10-27 02:09:53

标签: mysql docker

> docker exec -it craig bash  
> mysql -u root -p --local-infile 
> use craigslist;
> 
> LOAD DATA LOCAL INFILE 'C:/Users/hank/Desktop/craigs/data.csv' 
> INTO TABLE books_mags  
> FIELDS TERMINATED BY ',' 
> LINES TERMINATED BY '\n'
> IGNORE 1 ROWS;

我的桌面上有一个csv文件,我想输入到MySQL表中。但是我很费时间找出文件路径错误。

  

错误2(HY000):找不到文件'C:/Users/hank/Desktop/craigs/data.csv'(操作系统errno 2-没有这样的文件或目录)

我一直收到此错误。

我正在将Windows 10和docker容器用于mySQL。

如何将csv放入MYSQL?

3 个答案:

答案 0 :(得分:0)

要导入csv,有两种解决方案:

管理工具,用于管理关系数据库(MySql,Postgresql等)的内容

以下是docker-compose.yml中管理员的配置。 然后,您可以输入“ ip_addd_server:4041”之类的URL进入管理员,然后输入数据库的凭据(主机,密码,方言)并登录。

 adminer:
  container_name: adminer
  image: adminer
  restart: always
  ports:
   - 4042:8080
  networks:
  - main-network
  depends_on:
   - db  

通过此命令附加到容器的另一种解决方案。

docker exec -it db bin/bash // attach to container 

然后,您可以使用正确的用户身份登录并通过CSV文件导入数据。

答案 1 :(得分:0)

目录路径C:/Users/hank/Desktop/craigs/data.csv在您的主机系统(Windows)中。除非您已安装卷,否则Docker的文件系统将完全不同。两种方法来访问容器内的文件

第一种方法

启动容器时必须挂载卷

docker run -d image_name -v "C:/Users/hank/Desktop/craigs/:/data"

不总是建议这样做。

第二种方法

使用docker cp

将文件从主机复制到容器中
See 'docker cp --help'.

Usage:  docker cp [OPTIONS] CONTAINER:SRC_PATH DEST_PATH|-
    docker cp [OPTIONS] SRC_PATH|- CONTAINER:DEST_PATH

Copy files/folders between a container and the local filesystem

这类似于使用scp命令将文件复制到远程服务器。

答案 2 :(得分:0)

1-将CSV文件导入计算机

2-将它们加载到您的容器中,以手动将其放置在容器中,您可以使用:

docker cp file container:/<container-directory>

3-输入您的容器并执行

> sudo docker exec -it jose_signot_mysql bash
container> mysql -uUser -pPassword
mysql> LOAD DATA LOCAL INFILE '/path/in/container/to/file' into table FIELDS TERMINATED BY ',' LINES TERMINATED BY '\n' IGNORE 1 ROWS;

或使用嵌入式密码(安全问题)从外部执行脚本

  sudo docker exec jose_signot_mysql bash mysql -u<User> -p<Password> <databaseName> -e "LOAD DATA LOCAL INFILE '/path/in/container/to/file' into table <tableName> FIELDS TERMINATED BY ',' LINES TERMINATED BY '\n' IGNORE 1 ROWS;"

如果您在设置secure-file-priv时遇到问题,请在运行此实例时检查:https://github.com/docker-library/mysql/issues/447#issuecomment-403393323