> 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?
答案 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