#json #postgresql #regexp-replace
Вопрос:
Я попытался экспортировать в формате .json огромную таблицу, но получил ошибки, связанные с неожиданными символами, поэтому я запускаю все поля, чтобы избежать каких-либо конфликтов:
regexp_replace(field_name,'[^a-zA-Z0-9 -_()]','','g')
Но в результате получается, что все кажется пустым regexp_replace N в качестве значения.
Я думал, что это решит проблему. Есть ли в любом случае способы избежать ошибок неожиданных символов или NaN, выполнив какой-либо запрос в таблице? Или какой-то процесс для правильного преобразования .json или для передачи данных из postgres в .json.
Это исходные ошибки, из-за которых после выполнения предыдущей команды не появилось regexp_replace N для всех полей:
- Нашел неожиданного персонажа:
centroid.geojson:13811:
Нашел неожиданный характер В
JSON object {"type":"Feature","geometry":{"type":"Point","coordinates":[-0.175797882,51.56044564]},"properties":{"field1":"atribute1","field2":"atribute2","field3":"atribute3","field4":"atribute4","field5":"","atribute5":"","field6":"","field7":"","field8":"","field9":"","date":"27-02-1987","field10":"atribute10","field11":"","atribute11":"","field13":"","field14":"atribute14","field16...
- Найдено неправильное написание NaN: похоже на другое, но при работе с мультиполигонами,
путь/к/файлу.json:398: Найдено неправильное написание NaN В
JSON object {"type":"Feature","geometry":{"type":"MultiPolygon","coordinates":[[[[-0.018498801,51.50229262],[-0.018494037,51.502309446],[-0.018509668,51.502311149],[-0.01851684,51.5023119],[-0.018519242,51.502303037],[-0.01864384,51.502317193],[-0.018640275,51.502329632],[-0.018563854,51.502613229],[-0.018558638,51.502630497],[-0.01842617,51.502615039],[-0.018433776,51.502589179],[-0.018286221,51.502572747],[-0.018048472,51.502546247],[-0.01764496,51.502501208],[-0.017683038,51.502367501],[-0.01768609,51...
- Найдено неправильное написание Бесконечности: равно предыдущему
Комментарии:
1. И исходное сообщение об ошибке будет таким?
2. @AdrianKlaver Я отредактировал вопрос, добавив точные ошибки.
3. Нет, это ваше редактирование сообщения об ошибке, нам нужно увидеть фактическое сообщение об ошибке, возвращенное Postgres. Также пример оскорбительных строк из файла JSON.
4. @AdrianKlaver спасибо, я обновил ответ, надеюсь, это поможет, я не добавил его в начале, потому что не думал, что они важны.
Ответ №1:
После выполнения запроса:
UPDATE table SET field = replace(field, '''', '');
а затем для NaN и для NULL:
UPDATE table SET field= '' WHERE field= 'NaN';
а затем снова запрос, опубликованный в вопросе, и снова не выдал ни одной из ошибок, упомянутых ранее. Кажется, что все данные есть и верны.