Database 使用加载数据填充阿拉伯数据

Database 使用加载数据填充阿拉伯数据,database,mysql,collation,load-data-infile,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查询。

我正在尝试将.csv文件导入到表中。我已经了解了如何使用以下查询来获取插入的数据:

LOAD DATA INFILE 'examplesofdata.csv' INTO TABLE coins FIELDS TERMINATED BY ',' 
ENCLOSED BY '' ESCAPED BY '\\'  IGNORE 1 LINES;
然而,对于我的几个字段,我有阿拉伯语内容,这些内容作为一系列的?我认为这是因为我没有正确整理数据库,或者我没有完全理解LOAD DATA INFILE查询。如有任何建议,将不胜感激

表演创造了桌上硬币;输出为:

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

将字符集utf8\U unicode设置为您的语言环境如何?

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

此问题的错误位于:


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

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

  • 如果将数据库的默认字符集更改为LATIN1,则它将正常工作。您可以将表/列保留为UTF-8
  • 奇怪的是,如果使用“字符集latin1”,它将同时适用于UTF-8和latin1表/列。使用此方法,可以将db/table/column字符集保留在UTF-8上

  • 我还发现您的角色集客户端也需要UTF-8:

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

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

    将数据本地填充'filename'加载到表tablename字符集utf8以'\t'行结尾的列,以'\n'结尾


    字符集utf8起到了作用。

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

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

    检查我提出的解决方案,您需要将CSV字符集与加载数据填充匹配


    Cheers

    字符集utf8
    添加到
    加载数据
    语句是最接近的答案。然而,还提出了另外两个问题

    当尝试使用utf8/utf8mb4时,如果您看到问号(普通的,不是黑钻石)

    • 要存储的字节未编码为utf8。解决这个问题
    • 数据库中的列是字符集utf8(或utf8mb4)。解决这个问题
    • 此外,检查读取期间的连接是否为utf8
    尝试使用utf8/utf8mb4时,如果看到截断的文本

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

    在展会后制作TALBE硬币;当我尝试时:将数据填充“coinsArab.csv”字符集utf8\U unicode加载到以“,”结尾的表币字段中,用“,”括起来,用“\\”转义忽略1行;我得到一个错误,说我的sql中有一个错误,靠近字符集。。。它放错地方了吗?imm,你能用
    utf8\u unicode\u ci
    试试吗?我基本上提到了utf8编码。正确的语法你可以在这里罚款-我发现了我的语法错误,觉得很愚蠢,但它仍然导致???而不是文件中的内容。当我从excel中复制文本并手动粘贴时,效果很好,我不知道这是否有帮助。你有phpmyadmin吗?请查看一些字段排序设置,或者如Yada所指出的,您可以使用
    SHOW CREATE TABLE coins
    。该错误适用于4.1版,该版本没有
    加载数据的
    字符集
    子句。但是bug报告提供了一个解决方法。希望没有人在读这篇文章时仍然使用4.1;因此,这不应被视为“答案”。