【发布时间】:2020-02-17 17:32:15
【问题描述】:
是否可以将 LOAD DATA 和 csv 转换为 mysql 而不必在末尾为不存在的列添加 empty 值?
我所有的可选列都在模式的末尾排序:
CREATE TABLE `person` (
id int(20) NOT NULL AUTO_INCREMENT,
firstname varchar(30) NOT NULL,
lastname varchar(30) NOT NULL,
optional1 varchar DEFAULT NULL,
optional... varchar DEFAULT NULL,
optional50 varchar DEFAULT NULL,
PRIMARY KEY (`id`)
) engine=innodb AUTO_INCREMENT=0;
sample.csv:
1;john;doe
2;jabe;doe;;;opt val3;;;;;;opt val9;;;;;;...
重要提示:我不想明确列出我的LOAD DATA INFILE sql 语句中的所有列(我知道这可以通过使用IFNULL 和@var 的组合来实现)。
但是我不能直接加载到表中,告诉 mysql 忽略每行末尾的任何缺失字段吗?
【问题讨论】:
-
如果您愿意采用不同的方法来执行 SQL 语句,则 execsql.py (pypi.org/project/execsql) 的 IMPORT 元命令将加载短行数据。免责声明:我写了 execsql。您应该将“empty_strings”配置参数设置为“No”以强制 execsql 使用其自己的数据加载例程而不是 LOAD DATA LOCAL INFILE。
标签: mysql sql csv sql-insert load-data-infile