将 csv 导入 mysql 时日期字段值错误

date field values are wrong while importing csv into mysql

我正在使用加载数据将 csv 文件导入 mysql。我的加载数据命令如下。

load data local infile 'D:/mydata.csv' into table mydb.mydata 
fields terminated by ','
enclosed by '"'
lines terminated by '\r\n'
ignore 1 lines
(SrNo,SourceFrom,@var_updated,Title,First_Name,Middle_Name,Last_Name,Designation,Company_Name,@var_dob,Office_Mobile_No)  

set updated = str_to_date(@var_updated,'%Y-%m-%d'), dob = str_to_date(@var_dob, '%Y-%m-%d');

我在 "Updated" 和 "DOB" 列中得到不同的值。这些值在我的 .csv 文件中不同。

第一张图片来自 mysql workbench 而另一张来自 csv.

此外,我在 csv 中将 "office_mobile_no" 列的格式设置为 'number'。但它的显示数量是这样的。

当我双击它时,它只显示像 9875461234 这样的真实数字。它在 mysql 中也导入相同的数字。如何在特定列中获取原始编号?还有为什么我导入的日期值与 csv 的日期列不同?

我能看到的几点:

  1. 从您的屏幕截图看来,"updated" 的 CSV 文件中的数据是 d-m-Y 格式,但您告诉导入查找 Y-m-d。我认为你需要改变

set updated = str_to_date(@var_updated,'%Y-%m-%d')

set updated = str_to_date(@var_updated,'%d-%m-%Y')

对于 DOB 字段也是如此,假设您的 CSV 具有相同的格式。

  1. 你说我把"office_mobile_no"列的格式改成了csv里的'number'。CSV是文本文件格式,不存储任何信息如何显示数据。您所看到的正是 Excel 如何决定默认显示大量数字。您可以更改它,但是当您将其保存为 CSV 时,您的更改不会被保存,因为 CSV 文件格式不包含此类信息。尝试在 Notepad++ 中打开文件并查看文件的真实格式。