Измените формат даты, который считывает MySQL

StackOverflow https://stackoverflow.com/questions/404875

  •  03-07-2019
  •  | 
  •  

Вопрос

У меня есть пакетный файл, созданный для базы данных 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
Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top