我正试图用odo-python包将从Quantl下载的一个简单CSV文件导入MySQL表
t = odo('C:ProgramDataMySQLMySQL Server 5.6UploadsWIKI_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,"日期值不正确:第1行'date'列的'7/25/2016'")[SQL:'LOAD DATA INFILE%(路径)s\n INTO TABLE QUANDL_DATA_WIKI
\n CHARACTER SET%(编码)s\n FIELDS\n TERMINATED BY%(分隔符)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.partil.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")