转换 MySQL 中的数字字段

Convert Numerical Fields in MySQL

我导入了一个 CSV 文件,其中特定列具有十进制数。

在原始 excel 文件中(在将其保存为 CSV 之前),列的第一个数字显示为 218,790。当我选择单元格时,数字显示为 218790.243077911.

在 CSV 文件中,数字显示为 218790,当我选择单元格时,数字显示为 218,790。

当我在 mySQL 上导入文件并显示我创建的 table 时,数字显示为 218.000000000。

这是我使用的代码:

create table Apolo_Test(
Leads decimal (15,9)
);

LOAD DATA LOCAL INFILE 'C:/Users/SCRIPTS/file.csv'
INTO TABLE Apolo_Test
FIELDS TERMINATED BY ',' 
ENCLOSED BY '"'
LINES TERMINATED BY '\n'
IGNORE 7 ROWS
;

我尝试用这个更新格式:

update Apolo_Test set Leads = format(Leads, 10, 'de_DE');

但是没有用。我以前从未遇到过文件有逗号的情况。我猜这是英国版的数字字段。

如何在不使用 excel 中的任何 MACROS 的情况下使其在 mySQL 上运行?

更新: 它有效,但我收到了一些警告,尽管我仔细检查了 csv 文件和字段:

create table Apolo_Test(
Ad_Group varchar(50),
Impacts int,
Leads decimal (10,3)
);

LOAD DATA LOCAL INFILE 'C:/Users/me/Desktop/SCRIPTS/11/Adalyser.csv'
INTO TABLE Apolo_Test
FIELDS TERMINATED BY ','
ENCLOSED BY '"'
LINES TERMINATED BY '\n'
IGNORE 7 ROWS
(Ad_Group, Impacts, @Leads)
SET Leads = replace(@Leads, ',', '');
;

alter table Apolo_Test ADD IPL decimal (10,6) after Leads;
update Apolo_Test set IPL=Impacts/Leads;
select * from Apolo_Test;

您必须使用以下语法:

LOAD DATA LOCAL INFILE 'C:/path/to/mytable.txt' IGNORE
INTO TABLE mytable
FIELDS TERMINATED BY '\t' LINES TERMINATED BY '\r\n'
(int_col, @float_col)
SET float_col = replace(@float_col, ',', '.');

有关详细信息,请阅读 here

移动数据时千位分隔符无关紧要 -- Excel 内部值和 CSV 文件以及 MySQL 内部值不包括它。只有 "formatted" 输出包含它。而且你不应该使用格式化输出来移动数字。

注意语言环境,例如 de_DE。

德语“218.790”与英语“218,790”相同。

“218790.243077911”可能是 Excel 内部的数字。 “218,790”很可能是屏幕上的 English 表示;注意英文千位分隔符。

In the CSV file the number shows up as 218790 and when I choose the cell it is 218,790.

你是什么意思?也许文件本身没有逗号或点?但是 "choose the cell" 是什么意思?

我不知道如何在不截断某处的情况下获得“218.000000000”。