簡體   English   中英

Postgres:管道到psql

[英]Postgres: Pipeline to psql

我有一個簡單的問題,但找不到答案)

我有以下腳本:

sqsh -S SyBaseServer -U sybuser -P mypass -C 'select top 10000 * from dba.sybtable; -mbcp' | \
awk '{print substr($0, 0, length($0)-1)}' | \
psql -1 postgresql://admin:adminpass@pgserv:5432/pgbase -f sybtopg.sql

如何在awk的最后輸出字符串之后添加EOF? 我必須為psql關閉STDIN。

謝謝!

PS失敗的原因不是缺乏EOF。 正確的管道:

sqsh -S SyBaseServer -U sybuser -P mypass -C 'select top 10000 * from dba.wybtable; -mbcp' \
| awk '{print substr($0, 0, length($0)-1)}' | \
/psql  postgresql://admin:adminpass@pgserv:5432/pgbase -c "DELETE FROM testtable; COPY testtable FROM STDIN DELIMITER '|' CSV"

您不需要做任何特別的事情。 awk在其輸入上到達EOF時,它將執行其END塊(如果有),然后退出,這將關閉管道。 然后,這將導致管道中的下一個進程讀取EOF。

如果您希望awk腳本在此之前發送EOF,則必須使用exit語句exit

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM