【发布时间】:2012-02-11 23:07:33
【问题描述】:
我是 Postgresql 的新手,正在努力构建一个函数来循环遍历一系列 CSV 文件并加载它们。我可以使用单个文件使 COPY 正常工作,但我无法正确获取 FOR LOOP 语法。我正在尝试替换一个年份,因为我的苍蝇被命名为 /path/tmp.YEAR.out.csv
这是我破解的:
CREATE OR REPLACE FUNCTION test() RETURNS void as $$
BEGIN
FOR i IN 1982..1983 LOOP
COPY myTable
FROM '/path/tmp.' || i::VARCHAR || '.out.csv'
delimiters ','
END LOOP;
END;
$$ LANGUAGE 'plpgsql';
这会在第一个 || 处引发错误。所以我怀疑我对变量i 的连接管理不当。有什么建议吗?
【问题讨论】:
-
我们是否可以添加一个'r'标签并以这种方式解决它?
-
我当然想过……但我需要快速加载 postgresql COPY 命令……我有几十个文件 ~500MB。
-
@dirk,如果我要在 R 中滚动查询字符串,我可以将其作为查询提交吗?我在想我只能用普通的sql而不是plpgsql来做到这一点,所以我什至没有尝试。
-
我只是很普通,创建循环,并在每次迭代中读取相应的文件,然后将其写入(或附加)到 db。
标签: postgresql plpgsql