我有来自 FirebirdSQL 的 sql 转储文件。看起来与从 MySQL (MariaDB) 导出的相同。在该文件中有建表语句,其中之一如下:
CREATE TABLE VALIORS (
....,
STK_SUM FLOAT DEFAULT 0,
TWO_PERC FLOAT,
....,
);
文件后面有以下插入语句:
INSERT INTO VALIORS (...., SZK_ND,TWO_PERC, ....) values (...., 10039.349609375,200.78999328613281, ....);
INSERT INTO VALIORS (...., SZK_ND,TWO_PERC, ....) values (...., 10039.349609375,200.78999328613281, ....);
整个文件大于500 MB,所以我只在安装了xampp的Windows机器上通过命令行导入它。
其他所有内容均已正确导入,但所有 float 均已四舍五入。我的问题是我需要它们。有办法实现吗?问题从何而来?
最佳答案
使用DOUBLE
更精确地存储值的数据类型;但这仍然不能保证这些值将按原样存储。如果您想按原样存储值,请使用 DECIMAL(m, d)
数据类型。
CREATE TABLE test(
str VARCHAR(100),
flt FLOAT,
dbl DOUBLE,
dcm DECIMAL(26, 16)
);
INSERT INTO test(str, flt, dbl, dcm) VALUES
('10039.349609375', 10039.349609375, 10039.349609375, 10039.349609375),
('200.78999328613281', 200.78999328613281, 200.78999328613281, 200.78999328613281);
SELECT * FROM test;
结果:
+--------------------+---------+-------------------+------------------------+
| str | flt | dbl | dcm |
+--------------------+---------+-------------------+------------------------+
| 10039.349609375 | 10039.3 | 10039.349609375 | 10039.3496093750000000 |
| 200.78999328613281 | 200.79 | 200.7899932861328 | 200.7899932861328100 |
+--------------------+---------+-------------------+------------------------+
关于mysql - 如何从 mysqldump 插入 float ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55728453/