我在Mac上使用SequelPro作为MySQL。我使用导入函数将130 k .csv文件上传到数据库。一切似乎都很好,然后我得到了这样的信息:
文件读取错误:读取文件时发生错误,因为无法使用您选择的编码读取它(自动检测- Unicode (UTF-8))。只导入了23 000行。
当我点击"Ok“时,其他的一切看起来都比较好,我只是少了107,000行。
知道会是什么吗?也许我应该在进口过程中使用其他的东西,而不是自动检测?我想可能是在实际的.csv文件中有一些额外的逗号,但是我去掉了这些逗号,同样的事情也发生了。
在13万行中,肯定有一些非英语字符的可能性。MySQL不接受哪些?我将如何找到和替换它们?
这就是我在运行字符集查询时得到的结果:
show variables like 'character_set%';Variable_name Value
character_set_client latin1
character_set_connection latin1
character_set_database latin1
character_set_filesystem binary
character_set_results latin1
character_set_server latin1
character_set_system utf8
character_sets_dir /usr/local/mysql-5.6.10-osx10.7-x86_64/share/charsets/发布于 2013-04-22 18:40:29
这可能取决于您在何处生成CSV文件。如果在Windows机器上生成CSV文件,可能会出现一些字符集问题
请参阅https://code.google.com/p/sequel-pro/issues/detail?id=1629
请参阅以下URL,因为SequelPro的字符集问题并不是新的
如果CSV文件是在另一个Mac OSx服务器上生成的,则不应该出现此问题。
您可能不得不通过设置默认字符集来匹配CSV文件。在这里听起来很奇怪:
请运行此查询,您将看到如下所示:
mysql> show variables like 'character_set%';
+--------------------------+----------------------------+
| Variable_name | Value |
+--------------------------+----------------------------+
| character_set_client | utf8 |
| character_set_connection | utf8 |
| character_set_database | latin1 |
| character_set_filesystem | binary |
| character_set_results | utf8 |
| character_set_server | latin1 |
| character_set_system | utf8 |
| character_sets_dir | /usr/share/mysql/charsets/ |
+--------------------------+----------------------------+
8 rows in set (0.00 sec)
mysql>您还可以看到数据库的字符集。
mysql> show create database mydb\G
*************************** 1. row ***************************
Database: mydb
Create Database: CREATE DATABASE `mydb` /*!40100 DEFAULT CHARACTER SET latin1 */
1 row in set (0.00 sec)
mysql>也许您应该加载另一个具有匹配字符集的表:
CREATE TABLE anothertable LIKE mytable;更改整个表的字符集
ALTER TABLE anothertable CONVERT TO CHARACTER SET charset_name [COLLATE collation_name];或更改列的字符集
ALTER TABLE anothertable MODIFY col1 CHAR(50) CHARACTER SET utf8;然后,让SequalPro加载anothertable。
我想没那么咄咄逼人,只要改变列的字符集就行了。
发布于 2016-05-07 04:36:03
我刚遇到同样的问题,我找到了一个简单的解决方法。
当您使用mysqldump时,只需添加--hex-blob,就可以解决我的问题。
发布于 2016-02-23 23:07:41
我对大型数据库也有同样的问题。我把编码转换为西拉丁文(iso-1),它解决了这个问题。
https://dba.stackexchange.com/questions/40638
复制相似问题