Изменить формат даты, который читает MySQL - PullRequest
0 голосов
/ 01 января 2009

У меня есть пакетный файл, созданный для базы данных Oracle, который я сейчас пытаюсь импортировать в базу данных MySQL. Мне приходилось иметь дело со всевозможными несоответствиями между ними. Файл имеет все даты как «17-НОЯБРЬ 1981», а не «1981-11-17», как ожидает MySQL.

Пакетный файл имел команду ALTER SESSION set nls_date_format = 'DD-MON-YYYY'; для установки формата даты. Есть ли в MySQL эквивалент, позволяющий ему принимать даты как есть, без необходимости в основном редактировать файл?

1 Ответ

2 голосов
/ 01 января 2009

Я не верю, что это возможно без изменения SQL.

STR_TO_DATE можно использовать в операторах вставки для преобразования строк, или вы можете попробовать передать файл через sed и использовать регулярное выражение, чтобы определить даты и переработать их, например, что-то вроде этого заменило бы даты в одинарных кавычках в вашем исходном дампе вызовами str_to_date и передавало полученный преобразованный sql в 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
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...