6

我有一个城市名称数据集及其相应的纬度/经度,我已将其加载到 MySQL 表中,如下所示:

city_id | 城市名 | 纬度 DECIMAL(9,6) | 经度 DECIMAL(9,6)

典型的纬度/经度坐标可能如下所示:54.284758 / 32.484736。

但是,我只能得到比例为 2 的值才能正确显示在我的表中,换句话说,相当于 DECIMAL(5,2)。数据是从为 UTF-8 目的从 OpenOffice Calc 导出的文本 CSV 上传的。我知道 OpenOffice 在小数方面存在一些问题,但完整的纬度/经度肯定在导出的 CSV 中。如果我用记事本打开 CSV,数据就很好。

谁能看到我可能做错了什么?

谢谢。

更新: 得到它的工作,感谢所有输入。我从头开始重新创建了所有内容、新的模式文件(我正在使用 ORM)、新的 CSV 导出、新表、新的 LOAD DATA INFILE,并且它适用于正确的十进制输出。打败我。

4

3 回答 3

5

这对您的需求来说可能是多余的,但是在处理地理数据时,您可能需要考虑使用MySQL Spatial Extensions

我要补充一点,您当前使用的数据类型足以代表 CSV 文件中的数据。导入器中的某些东西在导入时将其截断,或者您用于查看数据的任何东西都在截断它。

于 2010-01-27T15:53:42.967 回答
1

我建议使用字符串数据类型(例如 varchar)来存储 Lat、Long。我正在开发一个广泛使用这些坐标的应用程序,并且将其存储为字符串时没有遇到任何问题。将其存储为数字会遇到精度问题。

只是需要考虑的事情。

于 2010-01-27T15:32:35.620 回答
0

为什么不在 MySQL 表中将字段声明为具有 DOUBLE 类型?位数和小数点后位数的限定符是可选的。

于 2010-01-27T15:56:21.867 回答