필요하다
데이터베이스에 텍스트 파일 값을 추가해야 합니다.
아래는 내 쉘 스크립트입니다
#!/bin/bash
DB_USERNAME='xxx'
DB_PASSWORD='xxxx'
DB_HOST='xxxx'
DB_PORT=xxx
DB_SERVICE='xxxx'
DB_CONNECTION=$DB_USERNAME/$DB_PASSWORD@$DB_HOST:$DB_PORT/$DB_SERVICE
echo $DB_CONNECTION
while read f1 f2 f3 f4 f5 f6 f7 f8 f9 f10 f11 f12 f13 f14 f15 f16 f17 f18 f19 f20 f21 f22 f23 f24 f25 f26 f27
do
sqlplus -s $DB_CONNECTION <<EOF
insert into GPRS_FILTER_TABLE_2 values($f1,$f2,(TO_DATE($f3,'YYYY-MM-DD HH24-MI-SS')),$f4,$f5,$f6,$f7,$f8,$f9,$f10,$f11,$f12,$f13,$f14,$f15,$f16,$f17,$f18,$f19,
$f20,$f21,$f22,$f23,$f24,$f25,$f26,$f27);
commit;
EOF
done < /home/work/test.txt
exit
test.txt 파일 값입니다.
'2341212121212' '17' '2020/05/25-15-55-03' NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL '33312212' 'vpn' '785' '0' NULL NULL NULL 'AUSTA' NULL '0' '39' 'ZBRCT1121300000001' 'Roaming GPRS' '223333'
다음 오류가 발생합니다.
insert into GPRS_FILTER_TABLE_2 values('Roaming,GPRS',(TO_DATE('357217094875381','YYYY-MM-DD HH24-MI-SS')),,,,,,,,,,,,,,,,,
*
ERROR at line 1:
ORA-00936: missing expression
text.txt의 두 번째 줄이 새 줄 역할을 하는 것 같습니다.
답변1
스크립트에서 다음 을 sqlplus -s $DB_CONNECTION
바꾸면 cat
문제가 표시됩니다 .
xxx/xxxx@xxxx:xxx/xxxx
insert into GPRS_FILTER_TABLE_2 values('2341212121212','17',(TO_DATE('2020/05/25-15-55-03','YYYY-MM-DD HH24-MI-SS')),NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,'33312212','vpn','785','0',NULL,NULL,
NULL,'AUSTA',NULL,'0','39','ZBRCT1121300000001','Roaming,GPRS' '223333');
이 read
명령문은 소스 데이터 파일의 따옴표를 고려하지 않으므로 'Roaming
그 자체가 값입니다. 일반적으로 GPRS'
이것이 다음 변수가 되지만 입력을 받을 다른 변수가 없기 때문에 마지막 변수는 줄의 나머지 부분 전체에 할당됩니다 GPRS' '223333'
.
귀하의 질문에 표시된 문제에 대한 간단한 해결책은 없습니다. 불변성을 중심으로 재설계하는 것입니다. 이상적으로는 데이터에서와 동일한 문자(공백)를 사용하여 값을 구분하지 않도록 데이터 파일을 변경할 수 있습니다.