有类似的问题,但它们没有解决我的问题:我在远程数据库中定义了一个存储过程。作为操作的一部分,SP 必须从本地文件批量插入(通过我在本地机器上运行的应用程序):过程:
CREATE OR REPLACE FUNCTION upsert_realtime(path text, traveltime_table regclass)
RETURNS void AS
$BODY$
BEGIN
EXECUTE format('COPY temp_table(link_id,start_time,end_time,travel_time,interval_time, travel_mode) FROM %L DELIMITER '';'' CSV', path);
--...
END;
$BODY$
LANGUAGE plpgsql VOLATILE
COST 100;
ALTER FUNCTION upsert_realtime(text, regclass)
OWNER TO postgres;
提供给 SP 的路径在本地机器上:
select * from upsert_realtime('/home/.../travel_time.txt','realtime_travel_time');
因此我得到这个错误:
terminate called after throwing an instance of 'soci::postgresql_soci_error'
what(): Cannot execute query. ERROR: could not open file "/home/.../travel_time.txt" for reading: No such file or directory
我唯一想到的就是以某种方式自动scp
将文件发送到 postgresql 服务器,然后运行 SP,这不是最好的主意。你能帮我找到解决办法吗?谢谢,谢谢