使用 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 用户有足够的权限来读取文件。
相关推荐
William_cl23 分钟前
【连载5】云数据库 MySQL 热点更新功能介绍
数据库·mysql
缘来如此091 小时前
mysql--核心日志文件详解
数据库·mysql
电商API_180079052471 小时前
电商数据分析之自动获取数据的技术手段分享
大数据·数据库·数据挖掘·数据分析
MilesShi1 小时前
RAG:解锁大语言模型新能力的关键钥匙
数据库·人工智能·语言模型
gsfl3 小时前
Redis 缓存
数据库·redis·缓存
恒悦sunsite10 小时前
Ubuntu之apt安装ClickHouse数据库
数据库·clickhouse·ubuntu·列式存储·8123
奥尔特星云大使10 小时前
MySQL 慢查询日志slow query log
android·数据库·mysql·adb·慢日志·slow query log
来自宇宙的曹先生10 小时前
MySQL 存储引擎 API
数据库·mysql
间彧10 小时前
MySQL Performance Schema详解与实战应用
数据库
间彧10 小时前
MySQL Exporter采集的关键指标有哪些,如何解读这些指标?
数据库