내 테이블 이름: KEY_PARAMETER SET_NO라는 두 개의 필드로 구성됩니다. 및 MES_VAL SET_NO. 수정되었으며 변경되지 않지만 MES_VAL 파일은 매분 변경됩니다.
내 의도는 이전 값을 삭제하지 않고 이 MES_VAL 필드를 업데이트하는 것입니다.
SQL> desc key_parameter;
SQL> select SET_NO and MES_VAL from key_parameter;
SET_NO. MES_VAL
------ -------
2324 12.22
5555 -90.40
65467 89.98
1243 123
6754 12.67
5677 898.55
7853 11.00
9865 449.12
3244 90.33
3545 76.89
1분 후에 MES_VAL 필드가 업데이트됩니다. 이렇습니다.
SET_NO. MES_VAL
------ -------
2324 17.67
5555 -90.5
65467 34,88
1243 88
6754 32,90
5677 227.9
7853 30.6
9865 109.3
3244 23.40
3545 132.8
백엔드에서는 Unix 쉘 스크립트가 내 Solaris 시스템에서 실행되고 있습니다. 내 업데이트 데이터는 .txt 파일에 저장됩니다. oracle sqlldr REPLACE 명령을 사용해 보았지만 데이터를 삭제한 다음 테이블을 새 데이터로 채웁니다. 현재 운영자는 새 값이 삽입될 때까지 어떤 데이터도 볼 수 없습니다.
또한 insert 명령을 시도했지만 필드를 업데이트하는 대신 필요하지 않은 이전 데이터를 유지하는 일이 발생했습니다.
답변1
아래 코드는 작동합니다.
cat /tmp/spec2PC_sc.txt | sed -e 's/[insert]*/insert into key_parameter (SET_NO,MES_VAL) values (/' | sed 's/.*/&);/' >> /tmp/spec2PC1.txt