如果在PL / pgsql(postgresql)中不存在创建目录,该怎么办?

时间:2018-01-27 13:04:22

标签: windows cmd mkdir

我在postgresql中定义了一个触发器,如下所示:

CREATE OR REPLACE FUNCTION test() RETURNS trigger AS
$BODY$
BEGIN
    COPY (select 1) TO PROGRAM 'mkdir -m 700 -p mfdata';
    RETURN NEW;
END;
$BODY$ 
LANGUAGE plpgsql;

现在,当表aircraft的记录更新时,我使用此触发器:

CREATE TRIGGER aircraft_test AFTER UPDATE ON aircraft 
FOR EACH ROW EXECUTE PROCEDURE test();

这意味着当aircraft表中的记录更新时,如果postgres数据目录中不存在mfdata目录,则创建mfdata目录。第一次记录更新,它创建一个文件夹whit -p名称,但在第二次更新记录中,它出错:

enter image description here

对于何时不创建文件夹(如果存在),我正在使用2018-01-27 08:24:40 IRST LOG: autovacuum launcher started A subdirectory or file -m already exists. Error occurred while processing: -m. A subdirectory or file 700 already exists. Error occurred while processing: 700. A subdirectory or file -p already exists. Error occurred while processing: -p. A subdirectory or file mfdata already exists. Error occurred while processing: mfdata. 2018-01-27 17:34:49 IRST ERROR: program "mkdir -m 700 -p mfdata" failed 2018-01-27 17:34:49 IRST DETAIL: child process exited with exit code 1 2018-01-27 17:34:49 IRST CONTEXT: SQL statement "COPY (select 1) TO PROGRAM 'mkdir -m 700 -p mfdata'" PL/pgSQL function test() line 3 at SQL statement ,但它出错。

为什么会出错?我该如何解决?

注意:
我想稍后动态创建子文件夹。

数据库日志:

import pandas as pd

df = pd.DataFrame({'col1': {0:1, 1:1, 2:2}, 'col2': {0:10, 1:20, 2:20}})

rdict = {1:'a', 2:'b'}
df2 = df.replace({"col1": rdict})

0 个答案:

没有答案