私のテーブル名:KEY_PARAMETER SET_NOという2つのフィールドで構成されています。および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