将具有空值的列从Excel导入到MYSQL Workbench时出现问题

时间:2015-11-05 02:58:39

标签: mysql excel mysql-workbench sql-insert bulkinsert

我有一个使用MYSQL Workbench管理的MYSQL数据库。我正在尝试从Excel导入数据(当然转换为CSV)到现有的表中,我经常这样做,一般没有问题。从技术上讲,从MYSQL的角度来看,MYSQL Workbench通过生成一系列“插入到”语句来处理这个问题,而不是作为导入语句。

我遇到了麻烦,因为我导入的特定数据集在最后一列中没有值。在数据库中,表中的最后一列需要一个2位数字(或NULL)。当我导入数据并且MYSQL Workbench将其转换为“Insert into”语句时,我希望在最后一列中插入的值为NULL。相反,我一直在尝试插入的每一行都收到1644错误。

这是我尝试过的没有用的东西: - 将最后一列留空 - 使用单词NULL填充列 - 使用字符\ N填充列 - 添加一个假行(稍后要删除),它实际上在最后一列中有一个值,以便它可以实现那里有一个列

我没有想法。理想情况下,我想坚持使用MYSQL Workbench的“导入”(即插入)功能的过程,这样我就可以从Excel中添加数据块,而且我无法手动编辑数据库中的每一行。

示例(当我将最后一栏留空时) 以下是CSV中的一行数据: 4209,阅读,2015,1。下降,第10/12 / 15,114,212,3.4,93

以下是自动生成的“Insert into”的内容: INSERT INTO TestsTestIDSubjectYearSeasonTestStartDateDurationRITStdErrorPercentileAccuratePercentile)VALUES('4209','Reading','2015','1。Fall','10 / 12/15','114', '212','3.4','93','');

这是错误的样子(我为每个“插入”得到其中一个) 错误1644:1644:错误:尝试在Percentile / Duration / RIT / AccuratePercentile中插入不正确的值; TestID:4209 SQL语句: INSERT INTO TestsTestIDSubjectYearSeasonTestStartDateDurationRITStdErrorPercentileAccuratePercentile)VALUES('4209','Reading','2015','1。Fall','10 / 12/15','114', '212','3.4','93','')

1 个答案:

答案 0 :(得分:1)

您进行导入的方式(通过结果集导入)仅用于简单的情况。你不能在那里配置太多,但它只需要很少的步骤。

对于更强大的导入,请尝试相对较新的表导入(使用架构或表节点上的架构树中的上下文菜单)。这允许导入CSV + JSON数据,您可以更多地配置详细信息(文件编码,要导入的列,数据类型等)。表导入不使用INSERT语句,而是使用LOAD DATA命令,因此也更快。

enter image description here