
psql
我想使用andCOPY
指令備份資料庫。這是我的腳本:
psql "user=${USERNAME} host=${HOSTNAME} dbname=${DBNAME} password=${PASSWORD}" -c \
"COPY (SELECT * FROM tbl) ORDER BY id ASC) TO STDOUT WITH CSV HEADER;" | \
bzip2 -z -f --best -c > /home/${DBNAME}-${FILENAME}.csv.bz2
我還想知道從資料庫複製了多少行,但 psql 沒有這樣的功能。所以我需要外部命令。我需要這樣的東西:
psql ... | wc -l | bzip2
有什麼解決辦法嗎?我找到的唯一解決方案是使用 fifo:
mkfifo /home/backup.fifo
psql ... | tee /home/backup.fifo | bzip2
現在從另一個終端視窗我可以使用wc
:
wc -l /home/backup.fifo
答案1
兩者bash
都有zsh
一個>(pipeline)
特點:
psql ... | tee >(wc -l) | bzip2
請注意,>
這裡不是普通的重定向,而是語法的必要部分。>
如果您想將其與實際重定向結合(中間有一個空格,這樣就不會被讀取為“ >>
redirect-for-append”),您將需要一秒鐘的時間。