3

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

“阿丹,安东尼奥”

最终只是“广告”。

列结构如下:

如果不存在“玩家”,则创建表(
  `player_name` varchar(255) COLLATE utf8 NOT NULL,
  `player_nation` varchar(255) 字符集 utf8 非空,
  `player_club` varchar(255) 字符集 utf8 非空,
  `player_position` varchar(255) 字符集 utf8 非空,
  `player_age` tinyint(2) NOT NULL,
  `player_dob` varchar(32) 字符集 utf8 非空,
  `player_based` varchar(255) 字符集 utf8 非空,
  `player_id` int(10) 无符号 NOT NULL
) 引擎=MyISAM 默认字符集=utf8 整理=utf8;

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

任何想法我还能如何防止这种情况?


更新

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

这是对负载数据的查询,由 PHP My Admin 生成

将数据本地 INFILE 'C:\\Windows\\Temp\\php21E4.tmp' 加载到表 `players` 由 ';' 终止的字段中 由 '"' 封闭 由 '\\' 转义 由 '\r\n' 终止的行。

解决方案

我发现了问题。我的 CSV 是用西欧字符集编码的。经过一番折腾以将其转换为 UTF8 后,它导入得很好。根本不是 SQL 问题。

4

1 回答 1

0

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

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

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

于 2010-07-26T23:53:52.460 回答