【发布时间】:2019-04-02 21:09:43
【问题描述】:
我正在将一个包含 314 列的 CSV 文件上传到 MariaDB 5.5 服务器。目前我的代码如下所示:
CREATE TABLE table_name
(column_1 TEXT,
column_2 TEXT,
...
column_314 TEXT)
ROW_FORMAT=DYNAMIC;
LOAD DATA LOCAL INFILE filepath
INTO TABLE table_name
FIELDS TERMINATED BY ','
ENCLOSED BY '"'
LINES TERMINATED BY '\n'
IGNORE 1 ROWS;
这会导致以下错误:
ERROR 1118 (42000): Row size too large (> 8126). Changing some columns to TEXT or BLOB
may help. In current row format, BLOB prefix of 0 bytes is stored inline.
我正在使用 Barracuda InnoDB 文件格式并启用了每表文件:
innodb_file_format=Barracuda
innodb_file_per_table=1
我认为问题在于 innodb 页面大小,设置为 16k。因为我使用的是 MariaDB 5.5 而不是 10.1+,所以我也不相信有办法增加页面大小。该数据库由组织管理,目前无法升级到较新版本。
【问题讨论】:
-
因为 MariaDB 和 MySQL 在这种情况下都使用相同的数据库结构(innoDB),所以 MySQL 的答案也几乎肯定是 MariaDB 的相同方法。请看this answer
-
请确认您已阅读并尝试过这些解决方案并说明如果此处的答案 (t)不回答您的问题