Как правильно импортировать данные широты и долготы в MySQL? - PullRequest
6 голосов
/ 27 января 2010

У меня есть набор данных с названиями городов с соответствующими широтами / долготами, которые я загрузил в таблицу MySQL, например:

city_id | название города | ДЕСЯТИЧНАЯ широта (9,6) | долгота DECIMAL (9,6)

Типичные координаты широты / долготы могут выглядеть следующим образом: 54.284758 / 32.484736.

Тем не менее, я получаю только значения со шкалой 2, чтобы они правильно отображались в моей таблице, другими словами, эквивалент DECIMAL (5,2). Данные загружаются из текстового CSV, который был экспортирован из OpenOffice Calc для целей UTF-8. Я знаю, что у OpenOffice есть некоторые проблемы с десятичными числами, но полная широта / долгота определенно находится в экспортированном CSV. Если я открою CSV с помощью блокнота, данные в порядке.

Кто-нибудь может увидеть, что я могу делать неправильно?

Спасибо.

UPDATE: Получил работу, спасибо за все вклад. Я воссоздал все с нуля, новый файл схемы (я использую ORM), новый экспорт CSV, новую таблицу, новый LOAD DATA INFILE, и он работает с правильным десятичным выводом. Бьет меня.

Ответы [ 3 ]

5 голосов
/ 27 января 2010

Это может быть излишним для ваших нужд, но при работе с географическими данными вы можете рассмотреть возможность использования MySQL Spatial Extensions .

Я добавлю, что тип данных, который вы используете в данный момент, достаточен для представления данных в том виде, как они есть в вашем CSV-файле. В вашем импортере есть что-то, что отключает его во время импорта, или то, что вы используете для просмотра данных, усекает его.

1 голос
/ 27 января 2010

Я бы предложил использовать строковый тип данных, такой как varchar, для хранения Lat, Long. Я работаю над приложением, которое широко использует эти координаты, и у меня не возникло проблем с сохранением его в виде строки. Храня его как число, вы столкнетесь с проблемами точности.

Просто кое-что рассмотреть.

0 голосов
/ 27 января 2010

Почему бы вам просто не объявить поля как имеющие тип DOUBLE в вашей таблице MySQL? Спецификаторы для количества цифр и цифр после десятичной точки являются необязательными.

...