zoukankan      html  css  js  c++  java
  • CSV文件导入Mysql出现的乱码等问题 (转载)

    将*.csv文件导入mysql可使用LOAD DATA INFILE,

    概要写法:

    Load data in file

    具体语法使用可参照:http://dev.mysql.com/doc/refman/5.1/zh/sql-syntax.html#load-data

    如果一个表中只有英文字符则导入不出现问题,写法也极其简单:

    LOAD DATA LOCAL INFILE ‘D:\ports.csv’ INTO TABLE ports;

    遇到的问题一:ports.csv文件中存在中文字符,导入数据后变成乱码

    首先修改表及字段的编码方式

    alter table ports character set gbk2312;
    alter table ports modify port_chinese varchar(50) character set gbk2312;

    通过 show create table ports 查看表及字段的编码方式,当然也可以通过可视化工具修改字段的编码格式

    我导入的命令行具体写法是:

    LOAD DATA LOCAL INFILE ’D:\ports.csv’ INTO TABLE ports  FIELDS TERMINATED ‘,' ENCLOSED BY ‘”’ LINES TERMINATED BY ‘ ’ starting by’’;

    但我修改以上两项之后我导入数据依旧乱码,我的CSV文件编码格式是GBK,

     

    在网络上找到一篇关于此问题的文章:http://www.sqlstudy.com/sql_article.php?id=2008081901,借鉴于文章中的写法修改语句如下:

    LOAD DATA LOCAL INFILE ’D:\ports.csv’ INTO TABLE ports  character set gbk2312  FIELDS TERMINATED ‘,' ENCLOSED BY ‘”’ LINES TERMINATED BY ‘ ’ starting by ’’;

    至此乱码变成了正确的中文字符。

    遇到的问题二:在导入数据后查看数据时发现CSV文件中第一行有效数据丢失,而多出三行怪异的无效数据行,而且在执行导入命令时有39个警告

     

    首先我使用SHOW WARNINGS;命令查看提示的警告内容,发现CSV文件中的列标题导入数据库中出现了N多警告,而出现数据错误的关键原因在 LINES TERMINATED BY ‘ ’ 这句中,因为第一行列标题并没有以回车换行字符结束,第一行标题列在转换过程出错,也导致了第一行有效数据在导入过程中出现错误。我将csv文件中文件标题的最后一列标题加上一回车后保存数据,CSV中的第一行有效数据终于导入到数据中,但却多一行标题行数据,通过IGNORE命令可解决。

    最后的CSV导入命令行的写法:

    LOAD DATA LOCAL INFILE ’D:\ports.csv’ INTO TABLE ports   character set gbk2312  FIELDS TERMINATED ‘,' ENCLOSED BY ‘”’ LINES TERMINATED BY ‘ ’ starting by ’’ IGNORE 1 LINES;
     
  • 相关阅读:
    LeetCode题解之Flipping an Image
    LeetCode 之Find Minimum in Rotated Sorted Array
    LeetCode题解Transpose Matrix
    LeetCode 题解之Minimum Index Sum of Two Lists
    LeetCode题解之Intersection of Two Linked Lists
    LeetCode 题解之Add Two Numbers II
    LeetCode题解之Add two numbers
    href="#"与href="javascript:void(0)"的区别
    有关ie9 以下不支持placeholder属性以及获得焦点placeholder的移除
    ie7下属性书写不规范造成的easyui 弹窗布局紊乱
  • 原文地址:https://www.cnblogs.com/super-super-/p/7532543.html
Copyright © 2011-2022 走看看