2

我正在尝试将 .csv 文件导入表中。我已经弄清楚如何使用以下查询插入数据:

LOAD DATA INFILE 'examplesofdata.csv' INTO TABLE coins FIELDS TERMINATED BY ',' 
ENCLOSED BY '' ESCAPED BY '\\'  IGNORE 1 LINES;

但是,对于我的几个字段,我的阿拉伯语内容作为一系列输入?我认为这是因为我没有正确整理数据库或者我不完全理解 LOAD DATA INFILE 查询。任何建议将不胜感激。

SHOW CREATE TABLE 硬币;输出是:

CREATE TABLE `coins` (
  `cat_num` int(11) NOT NULL,
  `reg_num` int(11) NOT NULL,
  `period` varchar(255) NOT NULL,
  `arb_period` varchar(255) character set utf8 collate utf8_unicode_ci NOT NULL,
  `ruler` varchar(255) NOT NULL,
  `arb_ruler` varchar(255) character set utf8 collate utf8_unicode_ci NOT NULL,
  `mint` varchar(255) NOT NULL,
  `arb_mint` varchar(255) character set utf8 collate utf8_unicode_ci NOT NULL,
  `date` varchar(255) NOT NULL,
  `weight` float NOT NULL,
  `diameter` float NOT NULL,
  `khedieval_num` varchar(255) NOT NULL,
  `ref` text NOT NULL,
 PRIMARY KEY  (`cat_num`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8
4

7 回答 7

4

LOAD DATA LOCAL INFILE 'filename' INTO TABLE tablename CHARACTER SET utf8 COLUMNS TERMINATED BY '\t' LINES TERMINATED BY '\n';

CHARACTER SET utf8可以解决问题。

于 2013-06-23T11:18:04.843 回答
2

这仍然是 MySQL 的一个错误。但是,我发现数据库的默认字符集是罪魁祸首。有两种可能的解决方法:

  1. 如果您将数据库的默认字符集更改为 LATIN1,那么它将起作用。您可以将表格/列保留为 UTF-8。
  2. 奇怪的是,如果您使用“CHARACTER SET latin1”,它将适用于 UTF-8 和 Latin1 表/列。使用此方法,您可以将 db/table/column 字符集保留为 UTF-8。
于 2011-01-15T07:25:07.087 回答
1

所以我最终从一位老教师那里得到了我的数据库课程的答案。他告诉我,这个问题实际上是当前版本的 MySQL 报告的错误,当时唯一已知的解决方案是通过 PHP 或其他脚本语言手动导入数据。

此问题的错误位于:http ://bugs.mysql.com/bug.php?id=10195

它对我没有太大帮助,因为我只是在制作原型,同时管理了一个解决方法,但希望它对你有更多用处。

于 2010-02-18T16:44:13.860 回答
0

如何设置CHARACTER SET utf8_unicode或您的语言环境?

于 2010-01-26T02:35:43.087 回答
0

我还发现您的 character_set_client 也需要是 UTF-8:

mysql> show session variables like 'char%';
+--------------------------+----------------------------------------+
| Variable_name            | Value                                  |
+--------------------------+----------------------------------------+
| character_set_client     | latin1                        
...

阅读 mysql 文档,了解如何为 who 服务器或仅会话更改它。

于 2011-01-17T19:06:09.790 回答
0

我也遇到了这个问题,但是我得到的不是一系列的?,而是截断的数据。

就像“aeióu”在“aei”中被截断。

检查我在这里提出的解决方案,您需要将 CSV 字符集与LOAD DATA INFILE字符集匹配。

干杯

于 2013-12-18T11:10:04.867 回答
0

添加CHARACTER SET utf8LOAD DATA声明中的是最接近的答案。然而,另外两个问题已经提出......

尝试使用 utf8/utf8mb4 时,如果您看到问号(常规问号,而不是黑色菱形),

  • 要存储的字节未编码为 utf8。解决这个问题。
  • 数据库中的列是CHARACTER SET utf8(或utf8mb4)。解决这个问题。
  • 另外,请检查读取期间的连接是否为 utf8。

尝试使用 utf8/utf8mb4 时,如果您看到被截断的文本,

  • 要存储的字节未编码为 utf8。解决这个问题。
  • 另外,请检查读取期间的连接是否为 utf8。
于 2016-06-18T08:04:57.993 回答