Загрузить CSV в таблицу MySQL с пакетом ODO Python - ошибка даты 1292

Я пытаюсь импортировать простой файл CSV, который я скачал из Quandl в таблицу MySQL с пакетом odo python

t = odo('C:\ProgramData\MySQL\MySQL Server 5.6\Uploads\WIKI_20160725.partial.csv', 'mysql+pymysql://' + self._sql._user+':'
            + self._sql._password +'@localhost/testDB::QUANDL_DATA_WIKI')

Первый ряд выглядит так в CSV:

A   7/25/2016   46.49   46.52   45.92   46.14   1719772 0   1   46.49   46.52   45.92   46.14   1719772

Таблица MySQL определяется следующим образом:

Ticker varchar(255) NOT NULL,
Date date NOT NULL,
Open numeric(15,2) NULL,
High numeric(15,2) NULL,
Low numeric(15,2) NULL,
Close numeric(15,2) NULL,
Volume bigint NULL,
ExDividend numeric(15,2), 
SplitRatio int NULL,
OpenAdj numeric(15,2) NULL,
HighAdj numeric(15,2) NULL,
LowAdj numeric(15,2) NULL,
CloseAdj numeric(15,2) NULL,
VolumeAdj bigint NULL,
PRIMARY KEY(Ticker,Date)

Выдает исключение 1292 со следующей информацией:

sqlalchemy.exc.InternalError: (pymysql.err.InternalError) (1292, "Неправильное значение даты:" 25.07.2016 "для столбца" Дата "в строке 1") [SQL: 'LOAD DATA INFILE %(path)s\n В таблицу QUANDL_DATA_WIKI\n CHARACTER SET %(кодировка) s \ n ПОЛЯ \ n ЗАПРЕЩЕНЫ% (разделитель) s \ n ЗАКЛЮЧЕНЫ%(quotechar)s\n ЗАБРОШЕНЫ%(escapechar)s\n ЛИНИИ, ПРЕКРАЩЕННЫЕ%(lineterminator)s\n IGNORE %(пропуски)s LINES\n '] [параметры: {'path': 'C:\ProgramData\MySQL\MySQL Server 5.6\Uploads\WIKI_20160725.partial.csv', 'quotechar': ' '', 'skiprows': 0, 'lineterminator': '\r\n', 'escapechar': '\', 'delimiter': ',', 'encoding': 'utf8'}]

У кого-нибудь есть идея, что не так с датой в первом ряду? Кажется, он не соответствует базе данных MySql

1 ответ

Решение

MySQL имеет проблемы с преобразованием даты. Я заметил, когда я определил поле даты как varchar

Date varchar(255) NOT NULL

тогда файл CSV был прочитан правильно

в моем SQL преобразование строки в формат даты выглядит так:

STR_TO_DATE(Date, "%m/%d/%Y")
Другие вопросы по тегам