SQL加载数据特殊字符

时间:2010-07-26 23:37:07

标签: mysql phpmyadmin character loaddata

我正在尝试从PHP My Admin中的CSV将数据导入SQL,因此可能是PHP My Admin问题。我遇到的问题是某些列使用特殊字符,例如:

“Adán,Antonio”

结束只是“广告”。

列结构如下:

CREATE TABLE IF NOT EXISTS `players` (
  `player_name` varchar(255) COLLATE utf8 NOT NULL,
  `player_nation` varchar(255) CHARACTER SET utf8 NOT NULL,
  `player_club` varchar(255) CHARACTER SET utf8 NOT NULL,
  `player_position` varchar(255) CHARACTER SET utf8 NOT NULL,
  `player_age` tinyint(2) NOT NULL,
  `player_dob` varchar(32) CHARACTER SET utf8 NOT NULL,
  `player_based` varchar(255) CHARACTER SET utf8 NOT NULL,
  `player_id` int(10) unsigned NOT NULL
) ENGINE=MyISAM DEFAULT CHARSET=utf8 COLLATE=utf8;

我猜这与字符集有关,但是mysql.com只是建议将表改为已经存在的字符集utf8。

任何想法我怎么能阻止这个?


更新

插入数据库很好,所以我猜这与我的表结构无关。这似乎与从CSV导入有关。

这是由PHP My Admin

生成的加载数据查询
LOAD DATA LOCAL INFILE 'C:\\Windows\\Temp\\php21E4.tmp' INTO TABLE `players` FIELDS TERMINATED BY ';' ENCLOSED BY '"' ESCAPED BY '\\' LINES TERMINATED BY '\r\n'.

我发现了这个问题。我的CSV编码了西欧字符集。经过一段时间将其转换为UTF8后,它导入就好了。根本不是SQL问题。

1 个答案:

答案 0 :(得分:0)

您能否跟踪截断发生的位置,很可能根本不是您的数据库问题。

尝试使用特殊字符从命令行对数据库表进行简单插入,看看是否成功。

然后尝试记录导入中的各个步骤以跟踪问题发生的位置......