문제

이제 MySQL 데이터베이스로 가져 오려고하는 Oracle 데이터베이스 용 배치 파일이 있습니다. 나는 둘 사이의 모든 종류의 불일치를 다루어야했다. 이 파일은 MySQL이 예상하는 것처럼 '1981-11-17'이 아닌 '17 -Nov-1981 '으로 모든 날짜가 있습니다.

배치 파일에는 명령이있었습니다 ALTER SESSION SET NLS_DATE_FORMAT = 'DD-MONYYYY'; 날짜 형식을 설정합니다. MySQL에는 파일을 크게 편집하지 않고도 날짜를 수락하도록하는 것이 있습니까?

도움이 되었습니까?

해결책

SQL을 수정하지 않고는 가능하지 않다고 생각합니다.

str_to_date 문자열을 변환하기 위해 삽입 문에 사용될 수 있거나 파일을 통해 파이프를 시도 할 수 있습니다. sed 그리고 Regex를 사용하여 날짜를 발견하고 재 작업하십시오. 예를 들어, 이와 같은 것은 원래 덤프의 단일 인용 날짜를 str_to_date에 대한 호출로 대체하고, 결과적으로 변환 된 SQL을 MySQL로 파이프합니다 ...

cat oracledump.sql |  sed "s/'[0-9][0-9]-\(JAN\|FEB\|MAR\|APR\|MAY\|JUN\|JUL\|AUG\|SEP\|OCT\|NOV\|DEC\)-[1-2][0-9][0-9][0-9]'/str_to_date(&, '%d-%b-%Y')/g" | mysql newdb
라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top