Domanda

Ho un file batch creato per un database Oracle che sto cercando di importare in un database MySQL. Ho dovuto affrontare ogni sorta di incoerenza tra i due. Il file ha tutte le date come '17 -NOV-1981 'piuttosto che' 1981-11-17 'come previsto da MySQL.

Il file batch aveva il comando ALTER SESSION set nls_date_format = 'DD-MON-YYYY'; per impostare il formato della data. Esiste un equivalente in MySQL per far sì che accetti le date così com'è senza dover modificare in modo sostanziale il file?

È stato utile?

Soluzione

Non credo sia possibile senza modificare l'SQL.

STR_TO_DATE potrebbe essere utilizzato nelle istruzioni insert per convertire le stringhe oppure provare a eseguire il piping del file tramite sed e usa una regex per individuare le date e rielaborarle, ad es. qualcosa del genere sostituirebbe le singole date tra virgolette nel dump originale con chiamate a str_to_date e reindirizzerebbe il sql trasformato risultante in 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
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top