2016-07-28 35 views
0

我試圖導入我從Quandl下載到MySQL表與ODO Python包負載CSV到MySQL表ODO Python包 - 日期錯誤1292

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文件像這樣在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) 

據救援人員到場ws例外1292與以下信息:

sqlalchemy.exc.InternalError:(pymysql.err.InternalError)(1292,「不正確的日期值:'7/25/2016'的第1行'日期'列' )[SQL:'LOAD DATA INFILE%(path)s \ n INTO TABLE QUANDL_DATA_WIKI \ n CHARACTER SET%(encoding)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'] [parameters:{'path':'C:\ ProgramData \ MySQL \ MySQL Server 5.6 \上傳\ WIKI_20160725.partial.csv','quotechar':'''','skiprows':0,'lineterminator':'\ r \ n','escapechar':'\','delimiter':',', 'encoding':'utf8'}]

有沒有人有一個想法在第一行日期有什麼問題?它似乎不匹配到MySql數據庫

回答

0

mysql有日期轉換的問題。我注意到,當我定義的日期字段爲VARCHAR

Date varchar(255) NOT NULL 

然後CSV文件在我的SQL正確讀取

的字符串日期格式的轉換則是這樣的:

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