Я пытаюсь вставить в базу данных несколько текстовых файлов с данными json. Каждый файл имеет суффикс 1,2,3 ... и т. Д. (Shape_routes1.json, shape_routes2.json и т. Д.). Для этого я объединяю индекс к базовому имени файла из цикла. Я получаю эту ошибку:
psql:insertshapes.sql:37: ERROR: syntax error at or near "file_path"
LINE 17: copy temp_json from file_path;
Не можете ли вы предоставить copy from
переменную в качестве пути? Или мне нужно что-то сделать с переменной (file_path), чтобы psql знал ее путь?
Буду признателен за любую помощь или рекомендации по этому вопросу.
delete from shapes;
DO $$
declare
n INTEGER := 1;
prefix TEXT := '/Users/me/model/json/filechunks/shapes_routes';
i TEXT := NULL;
file_path TEXT := NULL;
BEGIN
LOOP
EXIT WHEN n = 166;
i := CAST(n as TEXT);
file_path := prefix || i || '.json';
n := n + 1;
create temporary table temp_json (values text);
copy temp_json from file_path; --GETTING ERROR ON THIS LINE
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;
END LOOP;
END $$;