小弟新学MySQL,遇到问题查了好久也没找出问题,跪求各路大神相助!
问题:我用load data 函数将csv文件(已经转换为utf8-csv编码格式)导入到我新建的一张表mytable里,然后select * from mytable可以查询到所有行。但按照字段查询 select * from mytable where col.name=' xxx ' 时就出现了问题:如果col.name字段里的data是数值型或是文字型,该查询语句会返回符合条件的记录;如果col.name字段里的data是英文字符串,就没有记录返回,尽管表里
是存在符合查询条件的行的。
原因:小弟网上查了很久,很多类似问题都是不能按照data为中文的字段进行查询,可我的却是不能按照data为英文的字段进行查询,实在头疼。是不是csv文件的data编码格式没有完全转换为utf8格式,导致新表对应字段与data编码格式不一致?用show variables like 'character_set_database';
查看了mysql数据库及表编码格式 都是utf8格式,不知道问题在哪,求高人解答,谢谢!!Variable_name |Value |
-------------------------|--------------------------------------------------------|
character_set_client |utf8 |
character_set_connection |utf8 |
character_set_database |utf8 |
character_set_filesystem |binary |
character_set_results | |
character_set_server |utf8 |
character_set_system |utf8 |
character_sets_dir |C:\Program Files\MySQL\MySQL Server 5.7\share\charsets\ |
问题:我用load data 函数将csv文件(已经转换为utf8-csv编码格式)导入到我新建的一张表mytable里,然后select * from mytable可以查询到所有行。但按照字段查询 select * from mytable where col.name=' xxx ' 时就出现了问题:如果col.name字段里的data是数值型或是文字型,该查询语句会返回符合条件的记录;如果col.name字段里的data是英文字符串,就没有记录返回,尽管表里
是存在符合查询条件的行的。
原因:小弟网上查了很久,很多类似问题都是不能按照data为中文的字段进行查询,可我的却是不能按照data为英文的字段进行查询,实在头疼。是不是csv文件的data编码格式没有完全转换为utf8格式,导致新表对应字段与data编码格式不一致?用show variables like 'character_set_database';
查看了mysql数据库及表编码格式 都是utf8格式,不知道问题在哪,求高人解答,谢谢!!Variable_name |Value |
-------------------------|--------------------------------------------------------|
character_set_client |utf8 |
character_set_connection |utf8 |
character_set_database |utf8 |
character_set_filesystem |binary |
character_set_results | |
character_set_server |utf8 |
character_set_system |utf8 |
character_sets_dir |C:\Program Files\MySQL\MySQL Server 5.7\share\charsets\ |
但是我不明白csv读进新表后英文数据后面为什么会产生空格?是原来的csv表里就有空格还是读取的过程中在新表中数据后面产生的空格?
可能是你csv文件在编码转换的过程中出的问题,简单的测试一下,就是load出文件后直接导入到新表中(不考虑中文字符),然后看看纯英文字段保存是否正常。