【发布时间】:2011-09-12 19:56:41
【问题描述】:
我正在尝试将 csv 文件导入 mysql 数据库中的表中。该表有 141 列,数据类型为INT、VARCHAR(20)、TIMESTAMP、TIMESTAMP,然后是一系列TINYTEXTs 和VARCHAR(4)s。
我在数据类型为 VARCHAR(4) 的列上遇到 7 个数据截断错误,其中数据不超过 4 个字符。
我试图强迫它继续使用IGNORE,但随后它发疯了,将其他单元格中的数据切碎并分散在整个表格中。
我正在使用 MS 2008 R2 服务器上的命令行来运行 SQL,并且 csv 文件位于 Db 的目录中。
附:我确实阅读了与 mysql+import 或 mysql+data truncated (1265) 相关的其他几篇文章和谷歌搜索结果,但它们似乎没有涵盖这个特定问题。
谢谢!
编辑:我很确定它与LOAD DATA 函数有关,因为如果我一次INSERT 一行,它就可以正常工作……
我的导入 sql 是:
LOAD DATA INFILE '2011-09.csv' IGNORE INTO TABLE `survey`.`2011-09` FIELDS TERMINATED BY ',' LINES TERMINATED BY '\n';
【问题讨论】:
-
100+ varchar/text 列,你在这个表中存储了什么?闻起来像糟糕的数据库设计
-
来自 120 个问题的调查结果。他们以前有一个包含 628 个文本列的表格;不用说有很多废话。
-
VARCHAR 列使用的字符编码是什么?
-
每个问题有一列听起来很奇怪/有代码味道。您可能会看到在数据库中单独的问题表中每个问题有一行的好处。如果您正在重构,现在可能是进行重大更改的好时机。只是一个想法。
-
UTF8(与表默认相同)