Более быстрый способ обновления геометрии Point в таблицу с широты и долготы, которая хранится в CSV-файле - PullRequest
0 голосов
/ 09 апреля 2019

У меня есть большой CSV-файл, который имеет столбец широты и долготы.Я использую инструмент timescaleb timescaledb-parallel-copy для перемещения данных в базу данных postgis с временной шкалой, которая выполняет команды копирования в пакетном режиме параллельно.Затем я вызываю update my_table set geom=st_SetSrid(st_MakePoint(longitude, latitude), 4326);, чтобы заполнить столбец geom Точками.Однако это медленнее, чем хотелось бы.

Я пытался создать триггер for each row и запустить там обновление, но это было очень медленно, как и ожидалось.Я также попытался поместить update my_table set geom=st_SetSrid(st_MakePoint(longitude, latitude), 4326) where geom is NULL; в инструмент timescaledb-parallel-copy`, где вызывается команда копирования, в надежде, что это ускорит его с распараллеливанием.Это также было медленным, так как я не думаю, что он на самом деле распараллеливается и вместо этого сканирует всю таблицу каждый раз, когда копируется пакет, так как обновление сканирует всю таблицу, я думаю?Если есть способ обновить только тот пакет, который только что был скопирован, я считаю, что это будет самый быстрый способ.

Мне интересно, есть ли способ ускорить это обновление с помощью моей установки.Кажется, что я должен быть в состоянии сделать это преобразование для длинного лонга в Point во время приема вместо того, чтобы вызывать update после всего приема, так как у меня есть доступный lat и long в csv.

...