将LOAD DATA INFILE与阿拉伯数据一起使用

时间:2010-01-26 02:28:52

标签: database mysql collation load-data-infile

我正在尝试将.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

7 个答案:

答案 0 :(得分:4)

LOAD DATA LOCAL INFILE'filename'INTO TABLE tablename CHARACTER SET utf8 由'\ n'终止的列'\ n'终止于'\ n';

CHARACTER SET utf8 可以解决问题。

答案 1 :(得分:2)

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

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

答案 2 :(得分:1)

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

此问题的错误发生在:http://bugs.mysql.com/bug.php?id=10195

这对我没什么帮助,因为我只是在制作一个原型,并且同时管理了一个解决方法,但希望它对你有用。

答案 3 :(得分:0)

如何设置CHARACTER SET utf8_unicode或您的语言区域?

答案 4 :(得分:0)

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

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

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

答案 5 :(得分:0)

我也遇到过这个问题,但是我没有收集到一系列问题,而是收到了截断数据。

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

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

干杯

答案 6 :(得分:0)

CHARACTER SET utf8添加到LOAD DATA语句是最接近的答案。但是,还提出了另外两个问题......

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

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

尝试使用utf8 / utf8mb4时,如果看到截断文字,

  • 要存储的字节不编码为utf8。解决这个问题。
  • 另外,检查读取期间的连接是否为utf8。