尝试将CS​​V文件中的阿拉伯数据导入到使用LOAD DATA LOCAL INFILE的mysql

时间:2016-04-17 10:38:47

标签: mysql csv load-data-infile

我尝试从.CSV导入到mysql数据库,我正在使用LOAD DATA LOCAL INFILE函数,但每次导入数据时都会得到阿拉伯字符(????? ???)我该怎么做才能解决这个问题

这是我的SQL

LOAD DATA INFILE 'C:/wamp/www/academyOfArt/workShop/books.csv' INTO TABLE `books_library` CHARACTER SET 'utf8' FIELDS TERMINATED BY ',' OPTIONALLY ENCLOSED BY '"' LINES TERMINATED BY '\r\n' (title,cover,authorName,pagesNum,publishingHouse,publishingYear,details) 

好的,这是我的表格标题

id - cat - instituteId - title - cover - authorName -   pagesNum -  publishingHouse - publishingYear - details

行统计

Format  Compact
Collation   utf8_general_ci

+-----------------+--------------+------+-----+---------+----------------+
| Field           | Type         | Null | Key | Default | Extra          |
+-----------------+--------------+------+-----+---------+----------------+
| id              | int(11)      | NO   | PRI | NULL    | auto_increment |
| cat             | int(11)      | NO   |     | NULL    |                |
| instituteId     | int(11)      | NO   |     | NULL    |                |
| title           | varchar(255) | NO   |     | NULL    |                |
| cover           | blob         | NO   |     | NULL    |                |
| authorName      | varchar(255) | NO   |     | NULL    |                |
| pagesNum        | int(11)      | NO   |     | NULL    |                |
| publishingHouse | varchar(255) | NO   |     | NULL    |                |
| publishingYear  | year(4)      | NO   |     | NULL    |                |
| details         | mediumtext   | NO   |     | NULL    |                |
+-----------------+--------------+------+-----+---------+----------------+

Hay我在运行时注意到show variables like 'char%' 我得到了

mysql> show variables like 'char%';
+--------------------------+-----------------------------------------------+
| Variable_name            | Value                                         |
+--------------------------+-----------------------------------------------+
| character_set_client     | latin1                                        |
| character_set_connection | latin1                                        |
| character_set_database   | utf8                                          |
| character_set_filesystem | binary                                        |
| character_set_results    | latin1                                        |
| character_set_server     | latin1                                        |
| character_set_system     | utf8                                          |
| character_sets_dir       | c:\wamp\bin\mysql\mysql5.6.17\share\charsets\ |
+--------------------------+-----------------------------------------------+

3 个答案:

答案 0 :(得分:1)

您正在将CSV文件作为UTF-8加载,而您的表格是UTF-8,看起来不错。

如果结果中的问号如下所示:,并且在其他情况下显示阿拉伯字符,那么CSV文件可能不是UTF-8编码的。< / p>

仔细检查CSV文件是否为UTF-8编码。如有必要,转换它。 (有关这方面的建议,您需要了解自己所处的平台。)

编辑:这似乎是Excel的限制,显然无法生成UTF-8 CSV文件! Here是一些解决方法。

答案 1 :(得分:0)

我已经创建了自己的解决方案来解决这个问题, 我使用Laravel Framework&amp; amp;构建了一个简单的应用程序。 Laravel Excel Library,它可以正常使用阿拉伯语文本。

如果您想使用它,我可以在GitHub上发布它

答案 2 :(得分:-1)

确定;秘密不是utf8编码,而是windows-1256编码 所以你应该做什么 首先使用TAB分隔符将excel文件保存为txt,然后使用NOTEPAD ++或任何文本编辑器替换所有TAB(以确保从您选择复制文件中任意两列之间的空格并将其粘贴到替换中文本框)用“,”并点击全部替换 在你的phpmyadmin第二个你可以导入你的文件并使用windows-1256作为文件的字符集,并以格式选择CSV并确保列分隔符是“,”并确保文件中的列数是与数据表中的相同并点击GO