【发布时间】:2016-07-23 11:50:14
【问题描述】:
我对 MySQL 非常缺乏经验,并且遇到了很多问题。我在 Linux Mint 17.3 上使用 MySQL Workbench 6.3。
我正在尝试使用表数据导入向导将 CSV 文件导入表中。这适用于简单的表,但不适用于更复杂的表。
我正在纠正导入向导中的所有内容,以确保每一行和每一列都是完美的。一开始似乎可行,导入我的~14000行需要时间,有磁盘活动并且没有报告错误,但最后:
“导入 0 条记录”
表格和以前一样保持空白。
如果我导入到 new 表中,一切都会按预期工作,这令人沮丧。我注意到数据类型是完全不同的。我试图强制 .CSV 文件中的数据类型对应于预期的内容。我还确保“NULLABLE=NO”字段中确实包含某些内容。但是如果我违反了这些规则中的任何一个,会不会有错误?我什至尝试只导入一行,认为可能在这个大表的某个地方有一些坏数据,但我什至无法导入一行。
为什么没有错误,但“0 条记录导入”到现有表中,但在新表中一切正常?
如果我没有提供足够的信息,我提前道歉。
谢谢。
【问题讨论】:
-
数据类型完全不同是有意义的。什么样的差异?为什么不将数据导入到新表中,然后从那里导入到您的真实表中,在此过程中进行任何必要的数据类型转换?
-
不同之处在于现有表使用“varchar”或“timestamp”数据类型,而新表使用“text”。此外,新表使用“int”和“bigint”,而现有表使用“double”,并且有一个“bit”实例。我将学习在转换数据类型时尝试从一个表导入到另一个表,现在它们都是有效的 MySQL 表可能会更容易。谢谢你,肯。
-
原来数据有很多问题。仅仅转换它是不够的。我最终进入“更改表”并尝试更改每列的属性以使两个表匹配。这导致当我设置“NOT NULL”时找到很多 NULL 值,然后在我设置“UNIQUE”时找到很多重复值。在纠正这些之后,其他表中仍然有一些对 UUID 的引用,然后我还发现有一列需要 UUID 而不仅仅是唯一的数字。最后,当两个表匹配时,我将新数据导入到现有表中。
标签: mysql csv import mysql-workbench