PostgreSQL语法错误,找不到它

时间:2018-05-08 22:56:47

标签: postgresql syntax

我有一个代码,可以创建6个模板,向它们添加数据,合并它们并将其作为数据导出。我可以通过在不同段落上使用F5来使其工作,但我想使整个代码工作。有人可以帮助我,我很新。

CREATE TEMP TABLE john1
(email VARCHAR(200));

COPY john1(email) from 'E:\WORK\FXJohn1.csv' DELIMITER ',' CSV HEADER

CREATE TEMP TABLE john2
(email VARCHAR(200));

COPY john2(email) from 'E:\WORK\FXJohn2.csv' DELIMITER ',' CSV HEADER

CREATE TEMP TABLE john3
(email VARCHAR(200));

COPY john3(email) from 'E:\WORK\FXJohn3.csv' DELIMITER ',' CSV HEADER

CREATE TEMP TABLE john4
(email VARCHAR(200));

COPY john4(email) from 'E:\WORK\FXJohn4.csv' DELIMITER ',' CSV HEADER

CREATE TEMP TABLE john5
(email VARCHAR(200));

COPY john5(email) from 'E:\WORK\FXJohn5.csv' DELIMITER ',' CSV HEADER

CREATE TEMP TABLE john6
(email VARCHAR(200));

COPY john6(email) from 'E:\WORK\FXJohn6.csv' DELIMITER ',' CSV HEADER

CREATE TABLE finished AS
(SELECT * FROM john1
UNION
SELECT * FROM john2
UNION
SELECT * FROM john3
UNION
SELECT * FROM john4
UNION
SELECT * FROM john5
UNION
SELECT * FROM john6);

DO $func$
BEGIN
  EXECUTE $$
    COPY public."finished" TO 'E:\$$ || to_char(CURRENT_DATE, 'YYYY_MM_DD') || $$.csv' DELIMITER ',' CSV HEADER;
  $$;
END;
$func$ LANGUAGE plpgsql;

@Rupert

抱歉,但由于某种原因,这个脚本没有为我运行,我收到此错误:

ERROR:  syntax error at or near "for" LINE 1: for x in $(ls FXJohn1*.csv);

           Do I change the variables correctly? 

for x in $(ls file_name*.csv);

|我将file_name更改为文件夹|

中的一个.csv

do psql -c "copy table_name from

|我将table_name更改为我创建的当前表名|

'/path/.   todir/$x' csv" db_name; done

|我将路径更改为E:\ WORK(我的所有csv文件都有。

1 个答案:

答案 0 :(得分:0)

首先,您可以将多个.csv文件加载到同一个表中。所以我们首先设置一下:

CREATE TABLE finished 
(
email varchar(200)
)

然后,您可以使用简单的bash脚本从同一文件夹加载多个文件:

for x in $(ls file_name*.csv); 
do psql -c "copy table_name from
'/path/.   todir/$x' csv" db_name; done

这可以节省您执行多个“副本”,然后保存多个UNION。

然后你可以运行你的脚本:

DO $func$
BEGIN
EXECUTE $$
COPY public."finished" TO 'E:\$$ ||     to_char(CURRENT_DATE,
'YYYY_MM_DD') || $$.csv' 
DELIMITER ',' CSV HEADER;
$$;
END;
$func$ LANGUAGE plpgsql;