将 .csv 导入 MySQL 数据库时,某些数据在没有明显原因的情况下被修改,知道吗?
Posted
技术标签:
【中文标题】将 .csv 导入 MySQL 数据库时,某些数据在没有明显原因的情况下被修改,知道吗?【英文标题】:Some data is modified without apparent reason when importing .cvs to a MySQL db, any idea? 【发布时间】:2011-04-13 02:36:39 【问题描述】:所以我在 phpMyAdmin 中使用 Import CVS via LOAD DATA 将 80000 多行 .cvs 文件导入 mysql 数据库,它似乎工作正常,没有错误消息。
问题是,在导入之后,表中的所有行,从第 24002 行开始,在我的一个数据库字段中都有相同的编号,而我导入的 .cvs 文件中甚至不存在这个编号。
以此为例:
+-----------+-----------+-----------+
|id |num 1 |num 2 |
+-----------+-----------+-----------+
|1 |03040304 |22222 |
|2 |03040305 |22223 |
|3 |03040306 |22224 |
|... |... |... |
|24001 |03064304 |46222 |
|24002 |21777777 |46223 | <- 21777777 doesn't exist in my .cvs file
|24003 |21777777 |46224 |
|... |... |... |
+-----------+-----------+-----------+
我尝试了不同的方法,但没有任何帮助:
在第 24003 行开始导入 从 .cvs 文件中删除行 24001、24002 从 .cvs 文件中删除前 24002 行 在没有加载数据的情况下导入 .cvs 文件这是 .cvs 文件中的示例行:
"SOME NAME";"18/10/2004";"8250";"2157002001";"239423";"Done";"Name SURNAME"
不涉及特殊字符,只有 a-z、A-Z 和 0-9。
我完全不知道这个错误可能来自哪里,有什么想法吗?
提前致谢
【问题讨论】:
澄清一下:这是一个 CSV(逗号分隔值)文件吗?如果是这样,您能否发布文件中导致问题的一些行。 @Jaydee:是的,它是一个逗号分隔的值文件,值由';'分隔并用“”括起来。这是有问题的行的示例: "SOME NAME";"18/10/2004";"8250";"2157002001";"239423";"DONE";"SOME NAME" 没有特殊字符涉及到,而且这些行与其他行类似,没有问题,没有本质区别,只有数字和名称。 如果您将问题记录粘贴到自己的文件中并尝试导入此单记录文件会发生什么情况? @Jaydee & Alex:CSV 中的“C”代表“字符”,可以是逗号或其他字符(如您的情况下的“;”)。 【参考方案1】:数据库中“num 1”字段的定义是什么?它是 int 吗,因为 int 的最大值是 2,147,483,647,小于 2,157,002,001。
【讨论】:
哦,是的,就是这样! “num 1”设置为整数,不知道有这样的限制。是的,“问题编号”是 2147483647。应该在问题中说出来......谢谢!以上是关于将 .csv 导入 MySQL 数据库时,某些数据在没有明显原因的情况下被修改,知道吗?的主要内容,如果未能解决你的问题,请参考以下文章
MYSQL 使用 LOAD DATA INFILE 从 csv 导入数据
MYSQL 使用 LOAD DATA INFILE 从 csv 导入数据