SQL 加载数据特殊字符
Posted
技术标签:
【中文标题】SQL 加载数据特殊字符【英文标题】:SQL Load Data Special Characters 【发布时间】:2011-03-21 08:45:43 【问题描述】:我正在尝试将数据从 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 问题。
【问题讨论】:
好极了,正要建议阅读sourceforge.net/projects/phpmyadmin/forums/forum/72909/topic/… 【参考方案1】:您能否跟踪截断发生的位置,很可能问题根本不在于您的数据库。
尝试从命令行使用特殊字符简单地插入数据库表,看看是否成功。
然后尝试记录导入中的各个步骤以跟踪问题发生的位置...
【讨论】:
似乎特定于从 CSV 加载数据。如果我做一个正常的插入,那么它工作正常,我会用更多的细节更新问题。以上是关于SQL 加载数据特殊字符的主要内容,如果未能解决你的问题,请参考以下文章