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 ‘\r\n’ 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 ‘\r\n’ starting by ’’;

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

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

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

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

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

时间: 2024-08-02 19:01:16

CSV文件导入Mysql出现的乱码等问题 (转载)的相关文章

php操作csv文件导入mysql时中文乱码的解决办法

用网上通用的方法读取并上传csv文件内容进入mysql数据库中时,中文显示乱码,即使对数据用iconv函数转码后仍然乱码,这时可以用setlocale()函数: 这个函数经查阅是配置地域信息用的,在读取和写入csv数据前先用此函数进行定义,比如我的csv文件是无BOM的UTF-8格式,就先用如下函数进行定义: setlocale(LC_ALL, 'zh_CN.UTF8′); 然后再用iconv函数对数据内容进行转码入库等后续操作.

用脚本把csv文件导入mysql

1.windows做的csv文件默认是gbk字符集,而mysql设置了默认是utf8字符集,所以要把文件转为utf8格式. iconv -f GBK -t UTF8  /tmp/文件名.csv -o /tmp/文件名2.csv 2.用sql命令导入 load data infile '/tmp/mailut2.csv' into table db1.d fields terminated by ',' lines terminated by '\n' ignore 1 lines (id,ema

Java之利用openCsv将csv文件导入mysql数据库

前两天干活儿的时候有个需求,前台导入csv文件,后台要做接收处理,mysql数据库中,项目用的springboot+Vue+mybatisPlus实现,下面详细记录一下实现流程. 1.Controller层部分: /** * 读取csv文件,批量插入到数据库中 */ @RequestMapping("/importcsv") @RequiresPermissions("xxx:xxxxx:xxx") public R importCsv(@RequestParam(

csv文件导入到mysql

如何将csv文件导入到mysql数据库呢,方法有很多但最简单粗暴的方法还是用sql语句啦,像下面这样. 1 LOAD DATA INFILE 'csv文件路径' 2 INTO TABLE 数据表名 3 CHARACTER SET utf8 4 FIELDS TERMINATED BY ',' 5 ENCLOSED BY '"' 6 LINES TERMINATED BY '\n' 7 IGNORE 1 ROWS;

csv批量导入mysql命令

今天把从Kaggle上下载下来的csv数据导入mysql,想做个统计分析,怎奈csv文件有些大.所以仅仅能用mysql 命令导入,现mark下,以备以后不时之需: 1. 导入: 基本的语法: load data [low_priority] [local] infile 'file_name txt' [replace | ignore] into table tbl_name [character set gbk] [fields [terminated by't'] [OPTIONALLY]

将csv文件导入mongodb

1.表头就是字段名 2.注意如果导入乱码的话,就先把数据导入到sqlserver,再从sqlserver导出,导出注意数字类型长于15的列需要设置为文本类型后从sqlserver 复制粘贴到导出的csv文件, 3.将csv文件导入到mongodb,注意将表头名改为我们需要的列名 mongoimport -d ymci -c user_card --type csv --headerline --file E:\csv\rightcard.csv 原文地址:https://www.cnblogs.

2017年4月8日Office 365 使用CSV文件导入邮件组

国内版 第一步: Import-Module msonline Connect-MsolService 输入用户名密码 第二步: Get-MsolUser" 第三步: Set-ExecutionPolicy unrestricted $cred = Get-Credential $session = New-PSSession -ConfigurationName Microsoft.Exchange -ConnectionUri https://partner.outlook.cn/Power

CSV文件读取,解决汉字乱码

public String getDeptOuId(String openId) throws IOException { String deptId = ""; // 存储信息的文件的绝对路径  String csvPath = FileUtil.getWorkingPath()  .resolve(ConfigUtil.getConfig().get("idmappings")).toString(); System.out.print(csvPath); //

CSV文件写入,解决汉字乱码

    /**  * @param userInfoMap 注册用户的相关信息  * @throws IOException FileNotFoundException  * @return 将用户信息写入csv文件中  */ public static void WriteCSV(Map<String,String> userInfoMap){ try { // 存储经销商ID和经销商微信信息的文件路径 String csvPath = FileUtil.getWorkingPath() .