mysql - 将包含空值的列从 Excel 导入到 MYSQL Workbench 时出现问题

标签 mysql excel mysql-workbench sql-insert bulkinsert

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

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

这是我尝试过但没有成功的方法: - 将最后一栏留空 - 用单词 NULL 填充该列 - 用字符\N 填充该列 - 添加一个假行(稍后删除),该行实际上在最后一列中有一个值,以便它可以意识到那里有一列

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

示例(当我将最后一列留空时) CSV 中的一行数据如下所示: 4209,阅读,2015,1。秋季,10/12/15,114,212,3.4,93

自动生成的“插入到”如下所示: INSERT INTO 测试 (测试ID , 主题, 年份, 季节, TestStartDate持续时间RITStdError百分位数AccuratePercentile ) VALUES ('4209', '阅读', '2015', '1.秋季', '10/12/15', '114', '212', '3.4', '93', '');

错误如下(对于每个“插入”,我都会得到其中一个错误) 错误 1644:1644:错误:尝试在 Percentile/Duration/RIT/AccuratePercentile 中插入不正确的值;测试编号:4209 SQL语句: INSERT INTO 测试 (测试ID , 主题, 年份, 季节, TestStartDate持续时间RITStdError百分位数AccuratePercentile ) VALUES ('4209', '阅读', '2015', '1.秋季', '10/12/15', '114', '212', '3.4', '93', '')

最佳答案

您进行导入的方式(通过结果集导入)仅针对简单情况而设计。您无法在那里进行太多配置,但只需要很少的步骤。

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

enter image description here

关于mysql - 将包含空值的列从 Excel 导入到 MYSQL Workbench 时出现问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33535919/

相关文章:

sql-server - 2014 SQL Server 连接到本地网络上的不同 PC。 VBA

excel - 比较多列的高级过滤器

MySQL:根据其他列值选择列

mysql - 如何从表表中检索表记录?

mysql - SQL - 通过第三个表中的公共(public)链接连接三个表

mysql - 加载到 Hive 表时转换为 parquet 文件格式

java - 使用 JOOQ 更新多个表

java - java中从巨大的excel文件中读取数据的最快方法

java - 遇到正方形或空或?标记在java中从mysql数据库中检索utf-8字符

mysql工作台自动转储