python 中的 ODO 命令以及如何使用简单命令将 CSV 中丢失的文件上传为 NULL

ODO command in python and how to upload missing files from CSV as NULL with simple command

我尝试在 python.

中使用 odo 将数据从 csv 文件加载到 mysql table

csv 文件包含空白单元格。 odo 命令在遇到空白单元格时文件。

如何使用odo命令加载数据并默认为缺失数据插入空值

我正在尝试使用 odo python 包

将从 Quandl 下载的简单 CSV 文件导入 MySQL table
t = odo(csvpathName)

CSV 中的 rsow 看起来像这样。第二行缺少一个值。

A   7/25/2016   46.49   46.52   45.92   46.14   1719772 0   1   46.49   46.52   45.92   46.14   1719772
B   7/25/2016   46.49   46.52   45.92           1719772 0   1   46.49   46.52   45.92   46.14   1719772

MySQLtable定义如下:

Ticker varchar(255) NOT NULL,
Date varchar(255) 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)

它抛出异常 1366 并包含以下信息:

sqlalchemy.exc.InternalError: (pymysql.err.InternalError) (1366, "Incorrect decimal value: '' for column 'High' at row 185") [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 '] [参数: {'quotechar': '"', 'encoding': 'utf8', 'path': 'C:\ProgramData\MySQL\MySQL Server 5.6\Uploads\WIKI_20160725.partial.csv', 'lineterminator': '\n', 'escapechar': '\', 'skiprows': 0, 'delimiter': ','}]

有谁知道如何配置 ODO,以便我可以使用简单的命令将缺失值作为 NULL 值上传?

如果我将所有字段设为 varchar(255),那么它会将缺少的字段读取为“”。 sqlalchemy 无法将 csv 文件中的 '' 强制转换为另一种数据类型。

最好是使用 varchar 纯粹读取 csv 文件,然后再将其转换为正确的格式