我从oracle数据库将一个包含所有值的整个表导出到一个txt文件中—一列包含格式为“1,5”或“0,25”或“0,75”的浮点值,依此类推(=工作时间)。我连接了我的mariadb数据库,试图将txt文件导入我在mariadb数据库中创建的新表中。
我的show create table显示了“working\u hours”表中的浮动值:
CREATE TABLE work (working_hours FLOAT)engine=innodb default charset=utf8
collate=utf8_bin;
导入如下所示:
LOAD DATA LOCAL INFILE '/var/www/foldername/import.txt' INTO TABLE work
CHARACTER SET latin1 FIELDS TERMINATED BY '\t' LINES TERMINATED BY
';\n'(working_hours);
导入不会存储浮点值,但会切断整数旁边的所有内容。因此,将“1,5”存储为“1”,将“0,25”存储为“0”,依此类推。我想保留格式'n,m'而不是'n.m',我想用浮点值(每月工作多少小时?)来计算。当我也使用varchar时,我能用和来计算吗?我在互联网上找不到任何有效的解决方案,在我将浮点值转换为varchar之前,我想知道这在我的情况下是否有意义。
感谢您的建议和帮助!
2条答案
按热度按时间sqougxex1#
mysql不支持
,
作为小数点分隔符。https://dev.mysql.com/doc/refman/8.0/en/number-literals.html 说:
数字可能包括。作为小数点分隔符。
你必须使用
.
如果要使用数字数据类型或计算和或其他算术表达式。uemypmqf2#
正如@billkarwin指出的,mysql不支持
,
作为小数点分隔符。因此,要在数据库中存储这些数字,您需要对它们进行转换。这几乎可以肯定是必要的,因为在字符串比较中,对存储为varchar的浮点数的比较不一定有效'9'
是>'19'
.可能最简单的方法是将数据读入临时表,然后将其复制到
work
表转换为浮动的方式。你可以这样做:始终可以显示值,包括
,
作为小数点分隔符,通过在SELECT
即