Frage

Ich habe eine Batchdatei, die für eine Oracle-Datenbank erstellt wurde, die ich jetzt zu einer MySQL-Datenbank zu importieren bin versucht. Ich habe mit allen möglichen Unstimmigkeiten zwischen den beiden zu tun hatte. Die Datei hat alle Termine als '17 -Nov-1981' statt ‚1981.11.17‘, wie MySQL erwartet.

Die Batchdatei hatte den Befehl ALTE SESSION gesetzt NLS_DATE_FORMAT = 'DD-MON-YYYY'; , um das Datumsformat einzustellen. Gibt es ein Äquivalent in MySQL zu bekommen es die Daten zu akzeptieren, wie ohne zu majorly die Datei bearbeiten?

War es hilfreich?

Lösung

Ich glaube es nicht möglich ist, ohne das SQL zu ändern.

STR_TO_DATE könnte in den Insert-Anweisungen verwendet werden, um die Zeichenfolge zu konvertieren, oder Sie könnten versuchen, die Datei über sed und einen regulären Ausdruck verwenden, um Daten zu erkennen und zu überarbeiten sie, zB so etwas wie dies würde einzelne zitierte Daten in Ihrer ursprünglichen Dump mit Aufrufen an STR_TO_DATE und Rohr die resultierenden transformierten sql in mysql ...

ersetzen
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
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top