首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >为什么SequelPro只导入130 k中的23k行?

为什么SequelPro只导入130 k中的23k行?
EN

Database Administration用户
提问于 2013-04-22 18:35:19
回答 3查看 5.1K关注 0票数 2

我在Mac上使用SequelPro作为MySQL。我使用导入函数将130 k .csv文件上传到数据库。一切似乎都很好,然后我得到了这样的信息:

文件读取错误:读取文件时发生错误,因为无法使用您选择的编码读取它(自动检测- Unicode (UTF-8))。只导入了23 000行。

当我点击"Ok“时,其他的一切看起来都比较好,我只是少了107,000行。

知道会是什么吗?也许我应该在进口过程中使用其他的东西,而不是自动检测?我想可能是在实际的.csv文件中有一些额外的逗号,但是我去掉了这些逗号,同样的事情也发生了。

在13万行中,肯定有一些非英语字符的可能性。MySQL不接受哪些?我将如何找到和替换它们?

这就是我在运行字符集查询时得到的结果:

代码语言:javascript
复制
show variables like 'character_set%';
代码语言:javascript
复制
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/
EN

回答 3

Database Administration用户

回答已采纳

发布于 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文件。在这里听起来很奇怪:

请运行此查询,您将看到如下所示:

代码语言:javascript
复制
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>

您还可以看到数据库的字符集。

代码语言:javascript
复制
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>

也许您应该加载另一个具有匹配字符集的表:

代码语言:javascript
复制
CREATE TABLE anothertable LIKE mytable;

更改整个表的字符集

代码语言:javascript
复制
ALTER TABLE anothertable CONVERT TO CHARACTER SET charset_name [COLLATE collation_name];

或更改列的字符集

代码语言:javascript
复制
ALTER TABLE anothertable MODIFY col1 CHAR(50) CHARACTER SET utf8;

然后,让SequalPro加载anothertable

我想没那么咄咄逼人,只要改变列的字符集就行了。

票数 1
EN

Database Administration用户

发布于 2016-05-07 04:36:03

我刚遇到同样的问题,我找到了一个简单的解决方法。

当您使用mysqldump时,只需添加--hex-blob,就可以解决我的问题。

票数 0
EN

Database Administration用户

发布于 2016-02-23 23:07:41

我对大型数据库也有同样的问题。我把编码转换为西拉丁文(iso-1),它解决了这个问题。

票数 -2
EN
页面原文内容由Database Administration提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://dba.stackexchange.com/questions/40638

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档