首页 > 解决方案 > 如何导入包含大量数据并具有包含一些空值的列的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是唯一包含空值的列。

结果] 1

原始数据] 2

标签: mysql

解决方案


要成功导入 CSV 文件,请执行以下步骤:

首先要注意 csv 文件上的日期格式,因为它MySQL DATETIMEYYYY-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


推荐阅读