Измените формат даты, который считывает MySQL
Вопрос
У меня есть пакетный файл, созданный для базы данных Oracle, который я сейчас пытаюсь импортировать в базу данных MySQL.Мне приходилось сталкиваться со всевозможными несоответствиями между ними.Файл содержит все даты как "17 ноября 1981", а не "1981-11-17", как ожидает MySQL.
Пакетный файл содержал команду ИЗМЕНИТЬ НАБОР СЕАНСОВ nls_date_format='ДД-ПН-ГГГГ'; чтобы задать формат даты.Есть ли эквивалент в MySQL, чтобы заставить его принимать даты как есть без необходимости существенного редактирования файла?
Решение
Я не верю, что это возможно без изменения SQL.
STR_TO_DATE - СТРОКА_ТО_ДАТА может быть использовано в операторах insert для преобразования строк, или вы могли бы попробовать передать файл через сэд и используйте регулярное выражение для определения дат и их переработки, напримерчто-то вроде этого заменило бы даты в одинарных кавычках в вашем исходном дампе вызовами 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