首页 > 数据库 >导入mysql 乱码问题及 Linux 中的文件格式转换

导入mysql 乱码问题及 Linux 中的文件格式转换

时间:2023-08-01 12:11:58浏览次数:51  
标签:iconv word mysql sql 乱码 导入 文件格式 english ok

问题

下载了一个单词sql文件,导入mysql报错,查看文件类型:

% file english_word.sql
english_word.sql: Non-ISO extended-ASCII text

与另一个导入成功的文件对比,发现格式不一样:

% file english-root.sql
english-root.sql: UTF-8 Unicode text, with very long lines, with no line terminators

转换文件格式

  • 直接转换报错:iconv: 未知 41 处的非法输入序列

  • 参考Linux 下文件Non-ISO extended-ASCII编码问题

    iconv -f 源格式 -t UTF-8 原来的文件 > 新的文件

  • 使用脚本查找适合的格式,只需要替换下面的english_word.sql:

    iconv --list | sed 's/\/\/$//' | sort > encodings.list                                                                        
                                                                                                                                  
    for a in `cat encodings.list`; do                                                                                             
      printf "$a  "                                                                                                               
      iconv -f $a -t UTF-8 english_word.sql > /dev/null 2>&1 \                                                                    
      && echo "ok: $a" || echo "fail: $a"                                                                                         
    done | tee result.txt
    

    执行后,cat result.txt | grep -v fail | less即是可用于转换的指定格式。

  • 为了转换得到正常显示中文的文件,需要在结果中进一步搜索GB格式

    % cat result.txt | grep -v fail | grep GB 
    EBCDIC-CP-GB  ok: EBCDIC-CP-GB
    GB13000  ok: GB13000
    GB18030  ok: GB18030
    GBK  ok: GBK
    
  • 最终转换命令如下:

    iconv -f GB18030 -t UTF-8 english_word.sql > my.sql
    
  • 再次导入成功

    mysql> select * from EnWords limit 10;
    +----------+--------------------------------------------------------------------------------------------------------------+
    | word     | explain                                                                                                      |
    +----------+--------------------------------------------------------------------------------------------------------------+
    | a        | n.(A)As 或 A's  安(ampere);(a) art.一;n.字母A /[军] Analog.Digital,模拟/数字 /(=account of) 帐上             |
    | aaal     | American Academy of Arts and Letters 美国艺术和文学学会                                                      |
    | aachen   |  亚琛[德意志联邦共和国西部城市]                                                                              |
    | aacs     | Airways and Air Communications Service (美国)航路与航空通讯联络处                                            |
    | aah      |  [军]Armored Artillery Howitzer,装甲榴弹炮;[军]Advanced Attack Helicopter,先进攻击直升机                     |
    | aal      | ATM Adaptation Layer,ATM适应层                                                                               |
    | aapamoor | n.[生]丘泽,高低位镶嵌沼泽                                                                                    |
    | aapss    | American Academy of Political and Social Science 美国政治和社会科学研究院                                    |
    | aar      | n.阿勒河(位于瑞士中部,亦作Aare)                                                                              |
    | aardvark | n.[动]土豚                                                                                                   |
    +----------+--------------------------------------------------------------------------------------------------------------+
    

标签:iconv,word,mysql,sql,乱码,导入,文件格式,english,ok
From: https://www.cnblogs.com/dewan/p/17596114.html

相关文章

  • MySQL8压缩包安装教程
    解压缩包配置环境变量初始化mysqld--initialize-insecure安装服务mysqldinstallMySQL8移除服务mysqldremoveMySQL8启动服务netstartMySQL8修改密码切换数据库usemysql;修改root用户的密码alteruser'root'@localhostidentifiedby'mysql';刷新权限,一般......
  • liunx 环境 mysql5.6安装
    1安装包下载mysql5.6下载地址:http://dev.mysql.com/downloads/mysql/ 这里选择Linux版本:使用Navicat管理远程Linux服务器上的MySQL数据库 http://www.linuxidc.com/Linux/2011-09/42285.htm ftp://mirror.switch.ch/mirror/mysql/Downloads/MySQL-5.6/2mysql的安装从官网下载......
  • MySQL中动态SQL的解决方法:预处理语句
    动态SQL是一种很好的特性,允许开发人员在运行时动态构建和执行SQL语句。虽然MySQL缺乏对动态SQL的内置支持,但本文介绍了使用预处理语句(preparedstatements)的变通方法。将探讨如何利用预处理语句实现动态查询执行、参数化查询以及动态表和列查询。 了解预处理语句(preparedst......
  • docker 不适合MySQL
    近几年Docker非常的火热,各位开发者恨不得把所有的应用、软件都部署在Docker容器中,但是您确定也要把数据库也部署的容器中吗?这个问题不是子虚乌有,因为在网上能够找到很多各种操作手册和视频教程,这里整理了一些数据库不适合容器化的原因供大家参考,同时也希望大家在使用时能够谨慎一......
  • MySQL加锁逻辑与死锁
    RC级别:create table t1(id int primary key, name varchar(30));insert into t1 values(1, 'a'),(4, 'c'),(7, 'b'),(10, 'a'),(20, 'd'),(30, 'b');commit;案例一--sess1           --sess2begin;              ......
  • Java面试题 P28:数据库篇:MySql篇-MySql优化-索引-什么是索引?索引的底层数据结构是什么?
    什么是索引:索引(index)是帮助MySql高效获取数据的数据结构(有序)。在数据之外,数据库还维护着满足特定查找算法的数据结构(B+树),这些数据结构以某种方式引用(指向)数据,这样就可以在这些数据结构上实现高级查找算法,这种数据结构就是索引。 ......
  • 查看mysql有无启动日志
    showvariableslike'log_%'这些参数代表着MySQL的日志相关配置,对每个配置进行介绍如下:1.`log_bin`:指定二进制日志文件的开启状态。2.`log_bin_basename`:指定二进制日志文件名的前缀,MySQL会在其后面自动增加数字序列作为文件名。3.`log_bin_index`:指定MySQL的二进制......
  • MySQL 巨坑:永远不要在 MySQL 中使用 UTF-8!!请使用utf8mb4
    https://mp.weixin.qq.com/s?__biz=MzU4NDc1NDMxMw==&mid=2247486462&idx=1&sn=7c490f075e3b7d704ae8415a6afd3c30&chksm=fd95be18cae2370e4001eada1c3e33efe6dd5fb8afd5024aa17d001f8609b2c4d821a03280c4&mpshare=1&scene=24&srcid=0731Pfqoe5Yw......
  • Java面试题 P27:数据库篇:MySql篇-MySql优化-Sql语句执行很慢,如何分析呢?
       ......
  • Java面试题 P26:数据库篇:MySql篇-MySql优化-如何定位慢查询?
          ......