我正在尝试将tail -f -n 1的输出重定向到Postgres COPY命令,要求是对tail命令的每个输出都执行COPY命令。
请注意以下内容:
tail -f -n 1 <source_file> | xargs -n 1 psql -c 'copy <table_name> from stdin'
但是这不起作用,因为tail命令的输出用作psql命令的参数,而不是stdin。
也更通用:
tail -f -n 1 <source_file> | psql -tc "copy <table_name> from stdin"
不起作用,因为COPY命令在流的末尾而不是对每一行都执行提交。
答案 0 :(得分:0)
意识到问题是COPY并非旨在接受流,并且仅当COPY命令结束(程序中的数据结束)时数据才可用,在这种情况下,程序从未被终止,因为它打算用作消费者。