programing

PostgreSQL 추가 출력 사용 안 함

powerit 2023. 5. 13. 11:01
반응형

PostgreSQL 추가 출력 사용 안 함

Postgre에서 스크립트를 실행 중입니다.SQL 서버:

psql db -f sql.sql

부터bash아니면.cron대본.

다음을 사용하여 출력 페이지를 계속 시도합니다.more또는less.

에서 결과 페이징을 비활성화하려면 어떻게 합니까?psql?

제가 원하는 것은 데이터를 바꾸는 것입니다. 어떤 출력도 상관없습니다.

페이지화를 비활성화하고 출력을 유지하려면 다음을 사용합니다.

\pset pager off

이 설정을 기억하려면 ~/.psqlrc에 이 설정을 추가합니다. 예를 들어 다음과 같습니다.echo \\pset pager off >> ~/.psqlrc

psql 설명서를 참조하십시오.

이전 버전의 Pg에서는 토글에 불과했습니다.\pset pager

쿼리 출력을 완전히 억제하려면 다음을 사용합니다.\o /dev/null당신의psql대본.

억제하기psql의 정보 출력을 사용하여 실행합니다.-q또는 집합QUIET=1환경 속에서


결과를 생성하고 폐기하려면 리디렉션할 수 있습니다.stdout로./dev/null포함:

psql db -f sql.sql >/dev/null

다음을 사용하여 stdout 및 stderr을 모두 리디렉션할 수 있습니다.

psql db -f sql.sql >&/dev/null

그러나 오류 정보가 손실되어 문제가 발생할 수 있으므로 권장하지 않습니다.또한 결과를 생성하고 폐기하는 것은 비효율적입니다. 질의를 조정하여 처음부터 결과를 생성하지 않는 것이 좋습니다.

저도 이것을 찾고 있었습니다. ServerFault에 대한 비슷한 질문에서 방법을 찾았습니다.

psql -P pager=off <other params>

출력을 억제하지 않고 페이징 기능을 해제합니다.

다른 방법이 있습니다.psql 옵션 이름 등을 기억할 필요가 없다는 장점이 있습니다.

psql ... | cat

인 bash에는 출력 데이터를 리디렉션할 수 있는 스트림이 2개 있습니다. stdout 및 stderr. 이 출력은 어딘가로 리디렉션해야 하기 때문에 Linux에는 /dev/backup을 통해 도달할 수 있는 특정 '모든 것을 리디렉션' 노드가 있습니다.당신이 그곳에 보내는 모든 것은 공허 속으로 사라질 것입니다.

(셸에도 입력 스트림이 있지만 출력 억제를 요청하셨기 때문에 여기서는 무시하겠습니다.)

이러한 스트림은 숫자로 표시됩니다. 1은 stdout이고 2는 stderr입니다.

그래서 만약 당신이 그냥 stdout을 리디렉션하고 싶다면 당신은 그것을 그것으로 할 것입니다.<그리고.>연산자(데이터가 이동하는 위치를 가리킴)

stdout(/dev/dll로 변환)을 억제하고 싶다고 가정합니다.

psql db -f sql.sql > /dev/null

보시다시피 stdout이 기본값입니다. 작성할 스트림 번호를 사용하려면 스트림 번호가 사용되지 않았습니다.

psql db -f sql.sql 1> /dev/null

이제 stderror(스트림 번호 2)를 억제하려면 다음을 사용합니다.

psql db -f sql.sql 2> /dev/null

한 스트림을 다른 스트림으로 리디렉션할 수도 있습니다(예: stdout으로 stderror). 이는 모든 출력(정규 및 오류)을 어딘가에 저장하려는 경우에 유용합니다.

psql db -f sql.sql 2>&1 > log.txt

사이에 공백이 있을 수 없습니다.2>&1

마지막으로, 때로는 가장 흥미로운 것은 다음을 사용하여 모든 출력을 억제할 수 있다는 사실입니다.&> 할 는 '조용히' 할 입니다.

psql db -f sql.sql &> /dev/null

psql -U user -P pager=off -d database -c 'SQL';
psql db -f sql.sql > /dev/null

그것은 PAGER라고 합니다.

입력 ㅠㅠㅠ\pset pager 0명령어로, 끄기

그리고나서

를 입력하십시오.\pset pager 1다시 켜고 싶다면요.긴 출력에 사용되었습니다.

이 구문은 SSH 세션에서 작동했습니다.

psql db user --command "select * from table007" -A -P pager

언급URL : https://stackoverflow.com/questions/11180179/postgresql-disable-more-output

반응형