내 임무는 dbaccess의 UNLOAD TO 문을 사용하여 데이터베이스에서 데이터를 내보내고 유사한 데이터베이스에 삽입할 수 있는 파일로 변환하는 것입니다.
이제 질문은 다음과 같습니다.
이전 데이터베이스(DB1이라고 함)는 1993년 1월 1일부터 몇 분 단위로 일부 날짜를 저장합니다. 예를 들어 오늘은 11.980.800분입니다. 이제 해당 값을 가져와서 %d.%m.%Y
DATE만 값으로 허용하는 새 데이터베이스(DB2)의 행에 맞도록 형식의 날짜로 변환해야 합니다 .
DB1에서 내보낸 데이터는 구분됩니다 ^
. 다른 행에 대한 일부 관련 명령문이 있지만 if
이미 작성한 것처럼 DATE 값이 있는 행을 처리할 수 없습니다. 인쇄 문은 다음과 같습니다.
print "INSERT INTO zdv_voa(voa_fnr, voa_kritkz, voa_krit, voa_kz, voa_datv, voa_datb, voa_grund) VALUES("$1",\'"$2"\',\'"$3"\',\'"$4"\',"$5","$6",\'"$7"\');"
와 $5
는 $6
날짜로 변환해야 하는 분입니다.
awk 스크립트를 실행한 후 다음 내용이 포함된 파일이 필요합니다.
INSERT INTO zdv_voa(voa_fnr, voa_kritkz, voa_krit, voa_kz, **voa_datv**, **voa_datb**, voa_grund) VALUES(1,'P','148','T','10.10.2015','02.07.1999','60');
여기에 사용된 날짜는 예시일 뿐이며, 다른 값은 제가 직접 변환한 것입니다.
답변1
에포크 이후 1993년 1월 1일까지 몇 초가 지났습니까?
date -d '01/01/1993' +%s
시간
awk가 허용하는지 테스트할 수 있습니다.strftime()
echo 11980000 | awk '{u=60*$1+725842800 ; printf "%d -> %s\n",u, strftime("%x",u); } '
이번에는 돌아오세요 10/12/2015
이제 코드에 다음을 추가하세요.
dollar5=strftime("%x",60*$5+725842800) ;
# $6 is left as an exercice ..
print "INSERT INTO zdv_voa(voa_fnr, voa_kritkz, voa_krit, voa_kz, voa_datv, voa_datb, voa_grund) VALUES("$1",\'"$2"\',\'"$3"\',\'"$4"\',\'"dollar5"\',\'"dollar6"\',\'"$7"\');"