我尝试在 python 中使用 odo 将数据从 csv 文件加载到 mysql 表中。
csv 文件包含空白单元格。odo 命令在遇到空白单元格时文件。
如何使用 odo 命令加载数据并默认为丢失的数据插入空值。
我正在尝试使用 odo python 包将从 Quandl 下载的简单 CSV 文件导入 MySQL 表
t = odo(csvpathName)
rsow 在 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
B 7/25/2016 46.49 46.52 45.92 1719772 0 1 46.49 46.52 45.92 46.14 1719772
MySQL表定义如下:
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, "不正确的十进制值: '' for column 'High' at row 185") [SQL: 'LOAD DATA INFILE %(path)s\n INTO TABLE QUANDL_DATA_WIKI
\ n 字符集 %(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 值上传?