使用 LOAD DATA INFILE 将 CSV 文件导入运行在容器中的 MySQL

要使用 LOAD DATA INFILE 将 CSV 文件导入运行在容器中的 MySQL,并处理 CSV 文件中的 null 值,你可以遵循以下步骤:

1. 准备 CSV 文件

确保 CSV 文件的格式与你要导入的 MySQL 表格结构相匹配。对于 null 值,确保 CSV 文件中的 null 值以你选择的格式表示(例如,空字符串、特定的文本如'NULL'等)。

2. 复制 CSV 文件到容器

首先,你需要将 CSV 文件从宿主机复制到运行 MySQL 的容器内。使用 Docker 的 cp 命令来完成这个步骤。

sh 复制代码
docker cp /path/to/yourfile.csv my-mysql-container:/path/in/container

这里,/path/to/yourfile.csv 是宿主机上的 CSV 文件路径,my-mysql-container 是你的 MySQL 容器的名称或 ID,/path/in/container 是容器内的目标路径。

3. 导入 CSV 文件

然后,进入 MySQL 容器的命令行界面并执行 LOAD DATA INFILE 命令。

首先,进入容器的交互式 shell:

sh 复制代码
docker exec -it my-mysql-container bash

然后,在 MySQL 命令行中执行类似下面的 SQL 命令来导入数据:

sql 复制代码
LOAD DATA INFILE '/path/in/container/yourfile.csv'
INTO TABLE your_table
FIELDS TERMINATED BY ',' 
ENCLOSED BY '"' 
LINES TERMINATED BY '\n'
IGNORE 1 LINES
(column1, column2, @var3, column4, ...)
SET column3 = NULLIF(@var3,'NULL');

在这个命令中,your_table 是目标表名,column1, column2, @var3, column4, ... 是表中的列。对于可能包含 null 值的列(假设这里是 column3),使用一个变量(如 @var3)来接收原始数据,然后使用 SET 子句和 NULLIF 函数来把表示 null 的特定文本转换为真正的 null 值。在这个例子中,如果 @var3 的值是 'NULL',它将被转换为 SQL 的 NULL

4. 注意

  • 确保在 LOAD DATA INFILE 语句中正确设置字段分隔符、文本定界符和行终止符,以匹配 CSV 文件的格式。
  • 考虑到权限问题,你可能需要使用 LOCAL 关键字(即 LOAD DATA LOCAL INFILE),但这取决于你的 MySQL 配置和 Docker 容器设置。
  • 如果 CSV 文件中第一行是列标题,使用 IGNORE 1 LINES 来忽略它。如果没有列标题,则移除这部分。
  • 在执行这些步骤之前,请确保你有足够的权限来执行 SQL 命令,并且你的 MySQL 用户有足够的权限来读取文件。
相关推荐
3 分钟前
达梦数据库-事务
数据库·达梦数据库·dm
网硕互联的小客服1 小时前
MYSQL数据库和MSSQL数据库有什么区别?分别适用于什么脚本程序?
数据库·mysql·sqlserver
weixin_462446231 小时前
【原创实践】python 获取节假日列表 并保存为excel
数据库·python·excel
计算机毕设匠心工作室2 小时前
【python大数据毕设实战】全球大学排名数据可视化分析系统、Hadoop、计算机毕业设计、包括数据爬取、数据分析、数据可视化、机器学习、实战教学
后端·python·mysql
千寻技术帮2 小时前
10413_基于Springboot的智慧养老院管理系统
spring boot·mysql·源码·安装·文档·ppt·养老院
RPA 机器人就找八爪鱼2 小时前
RPA 赋能银行数字化转型:四大核心应用场景深度解析
数据库·人工智能·rpa
掂掂三生有幸2 小时前
使用openGauss搭建一个监狱管理系统
数据库
VX:Fegn08952 小时前
计算机毕业设计|基于Java人力资源管理系统(源码+数据库+文档)
java·开发语言·数据库·vue.js·spring boot·后端·课程设计
siriuuus2 小时前
Redis 安装、多实例部署、主从复制及 Cluster 实践
数据库·redis·centos
Polaris_GQ2 小时前
Navicat连接Oracle数据库报错:12514问题
数据库