Pregunta

Tengo un archivo por lotes que se creó para una base de datos Oracle que ahora estoy tratando de importar a una base de datos MySQL. He tenido que lidiar con todo tipo de inconsistencias entre los dos. El archivo tiene todas las fechas como '17 -NOV-1981 'en lugar de' 1981-11-17 'como MySQL espera.

El archivo por lotes tenía el comando ALTER SESSION configurado nls_date_format = 'DD-MON-YYYY'; para establecer el formato de fecha. ¿Existe un equivalente en MySQL para que acepte las fechas tal como están sin tener que editar el archivo de forma importante?

¿Fue útil?

Solución

No creo que sea posible sin modificar el SQL.

STR_TO_DATE podría usarse en las declaraciones de inserción para convertir las cadenas, o podría intentar canalizar el archivo a través de sed y use una expresión regular para localizar fechas y volver a trabajarlas, por ejemplo algo como esto reemplazaría las fechas entre comillas simples en su volcado original con llamadas a str_to_date, y canalizaría el sql transformado resultante en 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
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top