mknod /tmp/oracle.pipe p
sqlplus / as sysdba << _EOF
set escape on
host nohup gzip -c < /tmp/oracle.pipe > /tmp/out1.gz \&
spool /tmp/oracle.pipe
select * from employee;
spool off
_EOF
rm /tmp/oracle.pip
압축 파일 out1.gz 끝에 예고편을 삽입해야 합니다.
count=zcat out1.gz |wc -l
트레일러 삽입 방법
T5 (assuming count=5)
마지막 파일은 out1.gz이므로 압축을 풀 필요가 없습니다.
답변1
man gzip
보시다시피, ped gzip
파일은 간단하게 연결될 수 있습니다:
고급 사용법을 사용하면 여러 압축 파일을 연결할 수 있습니다. 이 경우 gunzip은 모든 구성원을 한 번에 추출합니다. 예를 들어:
gzip -c file1 > foo.gz gzip -c file2 >> foo.gz Then gunzip -c foo is equivalent to
cat file1 file2
cat
이는 ped 파일을 사용하여 수행할 수도 있습니다 gzip
. 예를 들면 다음과 같습니다.
seq 1 4 > A && gzip A
echo 5 > B && gzip B
#now 1 to 4 is in A.gz and 5 in B.gz, we want 1 to 5 in C.gz:
cat A.gz B.gz > C.gz && zcat C.gz
1
2
3
4
5
#or for appending B.gz to A.gz:
cat B.gz >> A.gz
외부 파일 없이 이를 수행하려면:
echo "this is the new line" | gzip - >> original_file.gz
답변2
나는 비슷한 문제로 어려움을 겪고 있습니다. 압축된 SQL 덤프에 몇 줄을 추가하는 것입니다. 내 솔루션은 @Fiximan의 답변을 기반으로 합니다.
echo 'append this string' | gzip >> out.gz
답변3
직원 책상은 얼마나 큽니까? 백만 명의 직원이 있고 레코드당 몇 킬로바이트가 필요한 경우가 아니라면 출력을 압축할 가치조차 없을 수도 있습니다.
count=$(wc -l out1) ; echo "T$count" >> out1
출력 파일을 생성할 때 출력 파일을 압축하는 수고를 할 가치가 없다는 것은 거의 확실합니다. 그렇다면 압축되지 않은 일반 텍스트로 출력하고 실행 한 다음 압축하면 어떨까요 gzip out1
?
select count(*) from employee
또는 명령 전에 몇 가지 변형을 실행하십시오 spool off
.