Pergunta

Eu tenho um arquivo de lote que foi criado para um banco de dados Oracle que agora estou tentando importar para um banco de dados MySQL. Eu tive que lidar com todos os tipos de inconsistências entre os dois. O arquivo tem todas as datas como '17 -Nov-1981' e não '1981/11/17', como espera MySQL.

O arquivo de lote teve o comando ALTER SESSION conjunto nls_date_format = 'DD-MON-YYYY'; para definir o formato da data. Existe um equivalente no MySQL para obtê-lo a aceitar as datas como é, sem ter que editar majorly o arquivo?

Foi útil?

Solução

Eu não acredito que é possível sem modificar o SQL.

STR_TO_DATE poderia ser usado nas instruções de inserção para converter as cordas, ou você poderia tentar tubulação o arquivo através de sed e usar um regex para identificar datas e refazê-los, por exemplo, algo como isso iria substituir datas individuais cotados em seu despejo original com chamadas para STR_TO_DATE, e canalizar a sql transformado resultando em 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 em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top