docker-compose
version: '3.9'
services:
db:
image: mysql:5.7.38
command: --default-authentication-plugin=mysql_native_password
restart: always
ports:
- 3306:3306
environment:
MYSQL_ROOT_PASSWORD: your_password
volumes:
# 数据目录
- ./datadir:/var/lib/mysql
# 配置文件
- ./:/etc/mysql//
-
配置
[client]
default-character-set=utf8
[mysqld]
skip-host-cache
skip-name-resolve
# 这个选项可以使mysql加载任意路径文件
secure-file-priv = ""
否则会报错:
ERROR 1290 (HY000): The MySQL server is running with the --secure-file-priv option so it cannot execute this statement
csv文件导入
文件路径对应关系
- 数据目录
/var/lib/mysql
- 要导入的库表为
- 则在
/var/lib/mysql/test
目录下,
mysql -uxxx -pxxx
进入mysql命令行。
待导入数据格式
名字 ,班级 , 简介,分数
张三, 2班, braa... , 97
....
建表SQL
create table student(
id INT PRIMARY KEY AUTO_INCREMENT,
name varchar(100), -- 名字
class varchar(100), -- ,班级
description varchar(6000), --简介
score INT(4), --分数
status INT(4)
);
要讲四列全部导入到指定列使用LOAD DATA
语句
load data infile '' into table student
FIELDS TERMINATED BY ',' -- csv字段分隔符
ENCLOSED BY '"'
LINES TERMINATED BY '\n' -- csv行分隔符
IGNORE 1 ROWS -- 去除表头
(@col1,@col2,@col3,@col4) -- @colN 代表csv文件的第N列的值
set name=@col1,class=@col2,description=@col3,score=@col4; -- 每个列分别赋值