Postgres COPY命令拖尾文件?

时间:2014-02-20 01:37:10

标签: postgresql

我想用复制命令将数据复制到postgres中;而其他进程同时写入CSV文件。

这样的事情可能吗?把stdout从尾部和管道带到postgres的stdin。

COPY targetTable ( column1, column2 )
    FROM `tail -f 'path/to/data.csv'`
    WITH CSV

2 个答案:

答案 0 :(得分:1)

假设PostgreSQL 9.3或更高版本,可以从程序输出中复制:

COPY FROM PROGRAM 'command'

来自the doc

  

PROGRAM

     

要执行的命令。在COPY FROM中,输入从标准读取   输出命令,并在COPY TO中,输出被写入   命令的标准输入。

这可能是你需要的,除了tail -f是一个永无止境的命令设计,你计划如何完成COPY并不明显。据推测,您需要使用更复杂的脚本替换tail -f并使用一些退出条件。

答案 1 :(得分:0)

你也可以从STDIN复制; 例如:

tail -f datafile.csv | psql -tc "COPY table from STDIN" database