2012-03-21 2 views
0

Мне предоставлен довольно большой файл дампа mysql, который мне нужно импортировать в существующую систему. Файл поступает из Индии, и я считаю, что их настройки локали отличаются от того, на котором я пытаюсь импортировать сервер. Проблема, с которой я столкнулась, связана со всеми полями datetime. Дамп имеет их в формате DDMMMYY: HH: MM: SS (например, 21MAR12: 09: 41: 17). При импорте это преобразуется в 00-00-0000 00:00:00. Я не контролирую экспорт. Я могу попросить их снова экспортировать данные, если это необходимо (меньше оптимального решения), но я чувствую, что мне нужно сказать им, как исправить данные для меня (или у меня может быть просто другая проблема). Есть ли опция командной строки для mysqldump для управления форматом datetime, который я могу сказать им использовать?Формат datetime для управления дампом/импортом MySQL

Или, еще лучше, мне нужно найти решение, в котором я могу управлять настройками импорта - возможно, добавив значение в раздел заголовка дампа (что-то вроде SET DATETIME FORMAT = XXXXXXXXXX).

Я потратил столько времени на поиск и чтение, и я не могу найти ответ, но, похоже, должен быть способ контролировать/конвертировать эти вещи при перемещении данных (особенно между серверами с разными языками)

Кроме того, обратите внимание! Я не могу изменить схему базы данных, в которую я импортирую. Итак, любое решение, которое говорит, добавляет поле varchar и импортирует в него, а затем конвертирует его самостоятельно, просто не будет работать для меня с точки зрения политики компании. Думаю, я мог бы создать фиктивную базу данных, импортировать ее и преобразовать, а затем снова экспортировать, но, надеясь найти более простой вариант! :)

Подробнее:

Запуск Ubuntu 9.04

Locale -a 
C 
en_US.utf8 
POSIX 

Mysql 5.0.75 для Ubuntu

ответ

1

В вашем сценарии вы можете, вероятно, добавить str_to_date вокруг даты:

str_to_date('21MAR12:09:41:17', '%d%b%y:%H:%i:%S'); 

Например, используя ваш любимый редактор потока:

sed -i -r 's/[0-9]{2}[A-Z]{3}[0-9]{2}:[0-9]{2}:[0-9]{2}:[0-9]{2}/STR_TO_DATE("\0","%d%b%y:%H:%i:%S")/g' yourDumpFile(s) 

Для вашего часового пояса неточностей вы можете обновить таблицы после импорта их использования convert_tz: http://dev.mysql.com/doc/refman/5.5/en/date-and-time-functions.html#function_convert-tz