Загрузить 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")