Я получаю эту ошибку в psql (10.4) при выполнении запроса на вставку в таблицу.
ERROR: invalid memory alloc request size 1212052384
Данные, которые я пытаюсь вставить, представляют собой данные о географических точках, и я предполагаю (так как размер файла составляет 303 МБ) около 2-3 миллионов точек, то есть отдельных записей. Это слишком большой для одного INSERT? Запрос sql ниже; он копирует данные JSON из текстового файла и вставляет их в базу данных. Было бы лучше, т. Е. Меньше памяти, чтобы попытаться сохранить отдельные фигуры в виде записей, а не точек?
delete from shapes;
create temporary table temp_json (values text);
copy temp_json from '/Users/me/model/json/shapes_routes.json';
insert into shapes
select values->>'shape_id' as shape_id,
(CAST(values->>'shape_pt_lat' as real)) as shape_pt_lat,
(CAST(values->>'shape_pt_lon' as real)) as shape_pt_lon,
(CAST(values->>'shape_pt_sequence' as integer)) as shape_pt_sequence,
(CAST(values->>'shape_dist_traveled' as real)) as shape_dist_traveled,
values->>'route_id' as route_id
from (
select json_array_elements(replace(values,'\','\\')::json) as values
from temp_json
) a;
drop table temp_json;