MySql批量导入csv文件
前置条件:因为在数据库在云端,且测试数据库与生产数据库不一致,索性就在本地搭建一个MySql数据库,把生产的可用数据导入到本地,方便本地测试。当然要注意一点,csv文件是没有建表语句的,需要你先建表
步骤1:启用MySQL本地文件加载
打开终端,执行:
bash
# 连接到MySQL
mysql -u root -p
输入密码:xxxxx
在MySQL中执行:
sql
SET GLOBAL local_infile = 1;
exit;
步骤2:创建导入脚本
在终端中执行:
bash
# 进入桌面目录
cd ~/Desktop
# 创建脚本文件
touch import_csv.sh
# 用文本编辑器打开
open -a TextEdit import_csv.sh
步骤3:复制脚本内容
在TextEdit中粘贴以下内容:
bash
#!/bin/bash
# 数据库配置
DB_HOST="localhost"
DB_USER="root"
DB_PASS="xxxx" # 你的密码
DB_NAME="db_xxx"
CSV_DIR="/Users/mac/Desktop/aliyun-mysql" # 这里是存放csv文件的文件夹
echo "开始批量导入CSV文件到 db_crm 数据库..."
echo "CSV文件目录: $CSV_DIR"
echo "----------------------------------------"
# 检查目录是否存在
if [ ! -d "$CSV_DIR" ]; then
echo "❌ 错误: CSV目录不存在: $CSV_DIR"
exit 1
fi
# 检查是否有CSV文件
csv_count=$(ls "$CSV_DIR"/*.csv 2>/dev/null | wc -l | tr -d ' ')
if [ $csv_count -eq 0 ]; then
echo "❌ 错误: 在 $CSV_DIR 中没有找到CSV文件"
exit 1
fi
echo "找到 $csv_count 个CSV文件"
echo "----------------------------------------"
# 遍历所有CSV文件
for csv_file in "$CSV_DIR"/*.csv; do
if [ -f "$csv_file" ]; then
# 从文件名获取表名(去掉.csv后缀)
table_name=$(basename "$csv_file" .csv)
echo "📥 正在导入: $(basename "$csv_file") → 表: $table_name"
# 使用LOAD DATA INFILE导入
mysql --local-infile=1 -h $DB_HOST -u $DB_USER -p$DB_PASS $DB_NAME 2>/dev/null << EOF
SET FOREIGN_KEY_CHECKS=0;
LOAD DATA LOCAL INFILE '$csv_file'
INTO TABLE $table_name
FIELDS TERMINATED BY ','
ENCLOSED BY '"'
LINES TERMINATED BY '\n'
IGNORE 1 ROWS;
SET FOREIGN_KEY_CHECKS=1;
EOF
# 检查导入结果
if [ $? -eq 0 ]; then
# 查询导入的数据量
count=$(mysql -h $DB_HOST -u $DB_USER -p$DB_PASS $DB_NAME -s -N -e "SELECT COUNT(*) FROM $table_name;" 2>/dev/null)
echo "✅ 成功导入: $table_name (数据量: $count 行)"
else
echo "❌ 导入失败: $table_name"
echo " 可能原因: 表不存在或数据格式不匹配"
fi
echo "----------------------------------------"
fi
done
echo "🎉 批量导入完成!"
echo "请在MySQL中验证数据:"
echo " USE db_xxx;"
echo " SHOW TABLES;"
echo " SELECT COUNT(*) FROM 表名;"
步骤4:保存并设置权限
在TextEdit中:
按 Command + S 保存
关闭TextEdit
回到终端:
bash
# 给脚本执行权限
chmod +x import_csv.sh
# 验证脚本
ls -la import_csv.sh
步骤5:运行导入脚本
bash
# 运行脚本
./import_csv.sh
步骤6:验证导入结果
导入完成后,在MySQL中检查:
bash
# 连接到MySQL
mysql -u root -p
输入密码后执行:
USE db_xxx;
-- 查看所有表
SHOW TABLES;
-- 查看某个表的数据量示例
SELECT COUNT(*) FROM sys_user;
-- 查看前几条数据示例
SELECT * FROM sys_user LIMIT 5;

浙公网安备 33010602011771号