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

标签 python mysql csv sqlalchemy odo

我正在尝试使用 odo python 包将从 Quandl 下载的简单 CSV 文件导入到 MySQL 表中

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,“第 1 行‘日期’列的日期值不正确:‘7/25/2016’”) [SQL: 'LOAD DATA INFILE %(路径)s\n 进入表 QUANDL_DATA_WIKI\n 字符集 %(编码)s\n 字段\n 终止于 %(分隔符)s\n 包含于 %(quotechar)s\n 转义于 % (escapechar)s\n 行由 %(lineterminator)s\n 终止 %(skiprows)s 行\n '] [参数:{'path': 'C:\ProgramData\MySQL\MySQL Server 5.6\Uploads\WIKI_20160725 .partial.csv'、'quotechar':'"'、'skiprows':0、'行终止符':'\r\n'、'escapechar':'\'、'分隔符':','、'编码' : 'utf8'}]

有人知道第一行的日期有什么问题吗?好像和MySql数据库不匹配

最佳答案

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

Date varchar(255) NOT NULL

然后csv文件被正确读取

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

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

关于python - 使用 ODO python 包将 CSV 加载到 MySQL 表中 - 日期错误 1292,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38628135/

相关文章:

python - 在 Multi-Tenancy 应用程序中动态设置 Flask-SQLAlchemy 数据库连接

python - 使用python将嵌套的json拆分为两个/多个文件

python - Python 正则表达式中的正斜杠

python - 如何修复 Django 文件上传中的 "Iterators should return strings, not bytes"

python - 使用函数作为字典键

mysql - 如何获取一天中每小时过去的地址数量

mysql - 连接两个表而不会获得重复的行

mysql - 何时使用单词 "table"的好记法?

将 CSV 转换为 GeoJSON 的 Python 脚本

node.js - 使用 NodeJS 解析 CSV 文件