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 加载数据特殊字符的主要内容,如果未能解决你的问题,请参考以下文章

spark sql加载路径中具有特殊字符的parqet

从C#中的数据中删除特殊字符后如何将dbf文件中的数百万行数据上传到SQL Server

如何用sql向数据库中插入包含特殊字符的字

sql中如何判断字符串中含有特殊字符

如何向SQL中插入含@、#等特殊字符的字符串

iOS URL带特殊字符(汉字、空格等)导致图片加载失败