我正在尝试将数据从 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 问题。