使用 ODO python 包将 CSV 加载到 MySQL table - 日期错误 1292

load CSV into MySQL table with ODO python package - date error 1292

我正在尝试将从 Quandl 下载的简单 CSV 文件导入 MySQL table 和 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

MySQLtable定义如下:

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, "Incorrect date value: '7/25/2016' for column 'Date' at row 1") [SQL: 'LOAD DATA INFILE %(path)s\n INTO TABLE QUANDL_DATA_WIKI\n CHARACTER SET %(encoding)s\n FIELDS\n TERMINATED BY %(delimiter)s\n ENCLOSED BY %(quotechar)s\n ESCAPED BY %(escapechar)s\n LINES TERMINATED BY %(lineterminator)s\n IGNORE %(skiprows)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 数据库

不匹配

mysql 日期转换有问题。我注意到当我将日期字段定义为 varchar

Date varchar(255) NOT NULL

然后正确读取csv文件

在我的 SQL 中,字符串到日期格式的转换如下所示:

STR_TO_DATE(Date, "%m/%d/%Y")