mysql - 如何导入包含大量数据并具有包含一些空值的列的csv文件
问题描述
mysql 正在删除那些包含空值的行,但我想要那些。就像我有一张桌子
create table users
(
user_id int Not null primary key,
created_at datetime not null,
company_id int not null,
language varchar(20) not null,
activated_at datetime,
state varchar(20) not null
);
activate_at是唯一包含空值的列。
解决方案
要成功导入 CSV 文件,请执行以下步骤:
首先要注意 csv 文件上的日期格式,因为它MySQL DATETIME
是 YYYY-MM-DD hh:mm:ss
格式。
DATETIME 类型用于同时包含日期和时间部分的值。MySQL 以 'YYYY-MM-DD hh:mm:ss' 格式检索和显示 DATETIME 值。支持的范围是“1000-01-01 00:00:00”到“9999-12-31 23:59:59”。如果 SQL 模式允许此转换,则无效的 DATE、DATETIME 或 TIMESTAMP 值将转换为适当类型的“零”值('0000-00-00' 或 '0000-00-00 00:00:00') .
从您的数据复制excel
并粘贴到notepad++
. 您的数据应如下所示notepad++
:
user_id;created_at;company_id;language;activated_at;state
0;2021-01-01 10:11:05;15415;ger;2021-01-01 10:11:05;active
1;2021-01-01 10:11:05;15416;ita;;pending
2;2021-01-01 10:11:05;15417;english;2021-01-01 10:11:05;pending
3;2021-01-01 10:11:05;15418;ger;;active
然后将其保存到 .csv 文件并复制到您的 mysql 路径(通常是/var/lib/mysql
或/var/lib/mysql-files/
)位置。
然后运行LOAD DATA INFILE
到你的MySQL
命令行。
LOAD DATA INFILE '/var/lib/mysql/users_tst.csv'
IGNORE INTO TABLE users_tst
FIELDS TERMINATED BY ';'
LINES TERMINATED BY '\n'
IGNORE 1 ROWS
(user_id,created_at,company_id,language,activated_at,state);
你的activated_at
空数据是0000-00-00 00:00:00
格式的,如果你想要 null 你应该改变表格描述,而不是在你的 csv 文件中留空NULL
推荐阅读
- c# - 在 Web API C# 中使用 FOR XML 从 SQL 读取 XML 结果
- excel - Excel:比较 2 个单元格值;如果 5 个或更多连续字符匹配
- c++ - 无法编译并将grpc链接到c ++程序
- sql - SQL - 从前几行减去的总和(逐行)
- r - 计算列中两个定义值之间出现的特定值的数量
- django - Django Query如何显示具有不同日期的记录计数并显示日期和计数
- node.js - 是否可以将过滤器添加到 azure blob
- android - Android 徽章编号未正确更新 android
- django - settings.py 文件的覆盖率显示为 100%
- css - Tailwind css purge 删除了所有黑暗类