Question

J'ai un fichier de commandes créé pour une base de données Oracle que j'essaie maintenant d'importer dans une base de données MySQL. J'ai eu à faire face à toutes sortes d'incohérences entre les deux. Le fichier contient toutes les dates "17 -NOV-1981" plutôt que "1981-11-17" comme prévu par MySQL.

Le fichier de commandes comportait la commande ALTER SESSION: définir nls_date_format = 'DD-MON-YYYY'; pour définir le format de la date. Y at-il un équivalent dans MySQL pour qu’il accepte les dates telles quelles sans avoir à éditer le fichier de façon majeure?

Était-ce utile?

La solution

Je ne crois pas que ce soit possible sans modifier le code SQL.

STR_TO_DATE pourrait être utilisé dans les instructions d'insertion pour convertir les chaînes, ou vous pouvez essayer de diriger le fichier via sed et utilisez une expression régulière pour repérer les dates et les retravailler, par exemple Quelque chose comme ceci remplacerait les dates entre guillemets simples dans votre vidage d'origine par des appels à str_to_date, et dirigerait le fichier SQL transformé en un fichier 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
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top