转换 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”。
我导入了一个 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”。