it-swarm.com.ru

Лучший способ вставить данные JSON в MYSQL

У меня есть данные JSON в текстовом файле, который содержит пару широты и долготы. Теперь я хочу сохранить эти данные в базе данных MYSQL.

Вот мои данные JSON

[{"latlon":{"lng":77.75124312,"lat":12.97123123},"type":"s"}, 
 {"latlon":{"lon":77.73004942455374,"lat":12.98227579706589},"type":"s"},
 {"latlon":{"lon":77.67374449291539,"lat":12.995490063545521},"type":"v"}, 
 {"latlon":{"lon":77.6097147993144,"lat":12.970900929013666},"type":"s"},
 {"latlon":{"lon":77.53933363476645,"lat":12.948316929346504},"type":"s"},
 {"latlon":{"lng":77.48213123,"lat":12.91213213},"type":"s"}
 .
 .
 .
 .
]
The String may go up to 50 points 
2
Rakesh

В некоторых комментариях предлагается оставить его в формате JSON и сохранить его в текстовом столбце.

Я бы посоветовал, если у вас есть контроль над вашей схемой, вы должны сохранить ее в двух полях NUMERIC - одно для широты, а другое для долготы. По сути, это те данные, которые у вас есть. Тот факт, что вы получили его с использованием JSON в качестве формата контейнера, не имеет отношения к самим данным.

Если вы сохраняете его в виде широты и долготы, запрос по нему проще, и вы все равно можете воссоздать JSON позже, если хотите ... но если вам захочется получить его не как JSON, вы будете в гораздо лучшем положении для этого. Это также означает, что вы не привязываетесь к JSON против будущих изменений.

Лично я думаю, что всегда полезно мысленно отделить внутреннюю природу данных от того, как вы их получили. Храните данные в любом формате, идиоматическом для этого хранилища, поэтому, если вы храните число, используйте один из числовых типов данных. Если вы храните дату и время, используйте datetime и т.д. Таким образом, вы не получите дополнительный слой между вами и самими данными каждый раз, когда захотите получить к ним доступ.

Этот подход также означает, что вы с большей вероятностью обнаружите плохие данные на ранних этапах - если вы просто сохраните JSON напрямую, не анализируя его в первую очередь, вы можете позже обнаружить, что широта или долгота недопустимы число. Черт, тот факт, что ваши примеры данных иногда имеют lon, а иногда lng, предполагает, что вы все равно должны выполнить некоторую очистку данных.

11
Jon Skeet

попробуйте использовать https://sqlizer.io Это легко конвертирует ваш json в файлы SQL.

SQLizer бесплатен для файлов до 5000 строк, а затем оплачивается (10 долларов).

3
Sathindu Kavneth

Это может помочь вам:

Посетите следующий сайт: он конвертирует ваш файл данных json в скрипт SQL:

интерактивный инструмент преобразования данных JSON в SQL

1
Shekhar Khairnar

Если вы используете Java для приложения, вы можете сделать что-то вроде этого.

Преобразуйте JSONObject в String и сохраните как TEXT/VARCHAR. При извлечении того же столбца преобразуйте строку в JSONObject.

Например

Написать в БД

String stringToBeInserted = jsonObject.toString();
//and insert this string into DB

Читать из БД

String json = Read_column_value_logic_here
JSONObject jsonObject = new JSONObject(json);

Ссылка: как сохранить объект JSON в базе данных SQLite

0
Avinash Sahu

Начиная с Mysql 5.7.10 и выше поддержка JSON является встроенной, поэтому вы можете иметь тип данных JSON

Проверка документов - В столбце JSON могут храниться только действительные документы JSON, поэтому вы получаете автоматическую проверку ваших данных.

Эффективный доступ - Что еще более важно, когда вы сохраняете документ JSON в столбце JSON, он не сохраняется как текстовое значение. Вместо этого он хранится в оптимизированном двоичном формате, который обеспечивает более быстрый доступ к членам объекта и элементам массива.

Производительность - Повысьте производительность запросов, создав индексы для значений в столбцах JSON. Это может быть достигнуто с помощью "функциональных индексов" на виртуальных столбцах.

Удобство - Дополнительный встроенный синтаксис для столбцов JSON делает естественным объединение запросов Document в ваш SQL. Например (features.feature - это столбец JSON): SELECT feature->"$.properties.STREET" AS property_street FROM features WHERE id = 121254;

0
adnan

По сути, если это данные, которые имеют значение для вашего программного обеспечения (если будут запросы с этими данными), вам следует рассмотреть синтаксический анализ JSON.

Если нет: сохраните как есть!

0
Mathieu