在 Windows7 专业版(64 位 Hyper-V 虚拟机)Service Pack 1 上,我运行 PostgreSQL 10,并安装了 pgAdmin4 和 pgAgent。
我成功创建了一个新数据库 NewDB,所有者是 NewUser,密码为 NewPassd 和一个新模式 NewSchema(名称是为这篇文章编造的)。
在 NewSchema 中,我创建了表 NewTable,我可以轻松地从查询工具中导入一个 CSV 文件 New.csv
COPY "NewSchema"."NewTable" FROM 'PathToFile\New.csv' DELIMITER ';' CSV HEADER ENCODING 'WIN1256';
然后,我创建了一个 pgAgent Job,下面是 CREATE Script
DO $$
DECLARE
jid integer;
scid integer;
BEGIN
-- Creating a new job
INSERT INTO pgagent.pga_job(
jobjclid, jobname, jobdesc, jobhostagent, jobenabled
) VALUES (
2::integer, 'importNewTable'::text, ''::text, ''::text, true
) RETURNING jobid INTO jid;
-- Steps
-- Inserting a step (jobid: NULL)
INSERT INTO pgagent.pga_jobstep (
jstjobid, jstname, jstenabled, jstkind,
jstconnstr, jstdbname, jstonerror,
jstcode, jstdesc
) VALUES (
jid, 'importNewTableStep'::text, true, 's'::character(1),
''::text, 'NewDB'::name, 'f'::character(1),
'BEGIN
TRUNCATE "NewSchema"."NewTable";
COPY "NewSchema"."NewTable" FROM ''PathToFile\New.csv'' DELIMITER '';'' CSV HEADER ENCODING ''WIN1256'';
END;'::text, ''::text
) ;
-- Schedules
-- Inserting a schedule
INSERT INTO pgagent.pga_schedule(
jscjobid, jscname, jscdesc, jscenabled,
jscstart, jscend, jscminutes, jschours, jscweekdays, jscmonthdays, jscmonths
) VALUES (
jid, 'importNewTableSch'::text, ''::text, true,
'2018-03-13 23:37:48+01'::timestamp with time zone, '2091-08-20 23:13:26+02'::timestamp with time zone,
-- Minutes
ARRAY[true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true]::boolean[],
-- Hours
ARRAY[false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false]::boolean[],
-- Week days
ARRAY[false, true, true, true, true, true, false]::boolean[],
-- Month days
ARRAY[false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false]::boolean[],
-- Months
ARRAY[false, false, false, false, false, false, false, false, false, false, false, false]::boolean[]
) RETURNING jscid INTO scid;
END
$$;
pgpass.conf 位于文件夹 ~\postgresql 中,如下所示:
localhost:5432:postgres:postgres:***
localhost:5432:postgres:postgres:***
localhost:5432:NewDB:NewUser:NewPassd
我无法让这份工作正常工作。我什至无法检索带有错误描述的日志。每当我从 PgAdmin4 运行作业时,什么都没有发生。
在互联网的其他地方,我只能找到处理连接问题的帖子。在这里,我不知道我的问题是什么。此外,Stack Overflow 中其他帖子的建议对我的情况没有帮助。
为了找到出路,我在 Windows 中创建了用户 NewUser 并将 pgpass.conf 复制到 ~\NewUser:它没用。
我正在寻找有关我可能创建的任何错误的说明或有关如何测试我的工作的说明。
谢谢你。尼科洛·安东尼埃蒂