mysql批量导入csv
1.登录数据库查看 LOAD DATA 可以导入数据的目录,如果为空或者为null 表示未设置或者禁用了
SHOW VARIABLES LIKE 'secure_file_priv';
如图以下使用/var/lib/mysql-files为例:
2.如果被禁用了可以在my.cnf 或者my.ini 文件中的[mysqld] 下增加
secure_file_priv="/var/lib/mysql-files"
3.查看secure权限,mysql用户是否可以访问如果不能访问,需要修改权限
chown -R mysql:mysql /var/lib/mysql-files
4.上传文件到 /var/lib/mysql-files
5.编写shell脚本如下:
#!/bin/bash
# MySQL数据库连接信息
DB_USER="root"
DB_PASSWORD="123456"
DB_NAME="zhixin"
# CSV文件所在目录
CSV_DIR="/var/lib/mysql-files/"
# 导入CSV文件到MySQL数据库
for file in $CSV_DIR/*.csv; do
table_name=$(basename $file .csv)
echo $table_name
mysql -u$DB_USER -p$DB_PASSWORD -e "USE $DB_NAME; LOAD DATA INFILE '$file' INTO TABLE $table_name FIELDS TERMINATED BY ',' ENCLOSED BY '\"' IGNORE 1 LINES;"
#其中 文件名和表名一一对应,TERMINATED BY ','表示以[,]进行分割,ENCLOSED BY '\"'表示字段内容被["]包括起来,用来传json串或多个值。