mysql5.7.16 Windows与Ubuntu的安装、导入数据与编码乱码问题。
来源:互联网 发布:打印纸品牌 知乎 编辑:程序博客网 时间:2024/05/18 20:35
mysql每个版本在安装、设置上都会有一定的差异。这次在安装使用5.7.16版本的时候,遇到了一些小问题,和网上现有的一些解决方法有差异。
安装:
windows上建议下载msi包进行安装:
Ubuntu建议添加APT源进行安装。
http://dev.mysql.com/downloads/repo/apt/
官方还提供了官方源的deb安装包,安装之后直接执行:
sudo apt-get updatesudo apt-get install mysql-server
即可安装。
注意安装过程均需要设置root账户的密码。其他安装过程与设置与网上的相关教程无异。
导入数据:
导入数据一般有两个命令:load data与mysqlimport。mysqlimport仅能在命令行下运行。示例如下:
mysqlimport --ignore-lines=1 --fields-terminated-by=, --columns='ID,Name,Phone,Address' --local -u root -p Database /path/to/csvfile/TableName.csv
导入以逗号分割的csv文件,将其导入到数据库Database中的TableName表,并忽略第一行。文件名与数据库的表明必须一致,否则会发生错误。在导入前,应该在数据中先create table TableName
。
load data命令在mysql中运行,默认只能导入位于mysql认为安全的目录中的文件。默认为
C:\ProgramData\MySQL\MySQL Server 5.7\Uploads
网上的方法是修改C:\ProgramData\MySQL\MySQL Server 5.7\my.ini 文件中的secure-file-priv=’C:/ProgramData/MySQL/MySQL Server 5.7/Uploads’ 语句,将其注释掉或者删除。但在mysql5.7版本中,这会导致load data彻底无法运行。
运行命令:
show variables like 'secure%';
如果注释掉该语句,其值显示为NULL,load data无法从任何文件夹中导入数据。正确做法应该讲语句改为:
secure-file-priv=”
即删除但引导中的内容。再次运行以上命令,发现值变为空:
+——————+——-+
| Variable_name | Value |
+——————+——-+
| secure_auth | ON |
| secure_file_priv | |
+——————+——-+
此时load data命令便可从任何目录中导入数据。以下为示例:
load data local infile 'C:\\Users\\XXX\\Documents\\data\\test.csv' into table test fields terminated by ',' OPTIONALLY ENCLOSED BY '"' lines terminated by '\r\n' ignore 1 lines;
导入test.csv文件到test数据表中,csv文件已逗号分隔,每个数据都有双引号,忽略第一行。
编码乱码:
对中文用户来讲,导入数据的过程中就会涉及到一个永恒的问题,编码与乱码。
在Windows下,mysql5.7.16版本默认使用了UTF-8编码,在导入txt、csv数据的时候只需要注意将原数据的编码改成UTF-8即可。当然也可以在建立数据库是指定collate为gbk,但为了通用,建议使用UTF-8编码。
create database test_gbk collate 'gbk_chinese_ci';
以下为ubuntu设置
在ubuntu下,mysql5.7.16的默认编码设置很是诡异。默认配置下导入UTF-8编码的txt、csv文件均会出现乱码问题。网上搜索之后,才发现mysql数据库的默认编码竟然不是UTF-8
show variables like 'char%';
得到如下结果。character_set_database的值为latin1。
+————————–+—————————-+
| Variable_name | Value |
+————————–+—————————-+
| character_set_client | utf8 |
| character_set_connection | utf8 |
| character_set_database | latin1 |
| character_set_filesystem | binary |
| character_set_results | utf8 |
| character_set_server | latin1 |
| character_set_system | utf8 |
| character_sets_dir | /usr/share/mysql/charsets/ |
+————————–+—————————-+
解决这一问题有两个思路,一个就是在创建数据库和数据表的时候指明collate的值:
create database test collate 'utf8_general_ci';
另一种方法则是修改mysql的配置文件。需要注意的是,老版本的mysql中,其配置文件的路径为:
/etc/mysql/my.cnf
在mysql5.7.16中,以上文件成为一个链接文件,根据里面的内容,可以判断其实际的配置文件路径为:
/etc/mysql/conf.d/mysql.cnf
在以上文件中添加:
[mysql]
default-character-set=utf8
[client]
default-character-set=utf8
[mysqld]
character-set-server=utf8
重启mysql服务:
service mysql stopservice mysql star
再次进入mysql运行
show variables like 'char%';
得到:
+————————–+—————————-+
| Variable_name | Value |
+————————–+—————————-+
| character_set_client | utf8 |
| character_set_connection | utf8 |
| character_set_database | utf8 |
| character_set_filesystem | binary |
| character_set_results | utf8 |
| character_set_server | utf8 |
| character_set_system | utf8 |
| character_sets_dir | /usr/share/mysql/charsets/ |
+————————–+—————————-+
则显示成功。
此时导入UTF-8的文档就不会再出现乱码。
- mysql5.7.16 Windows与Ubuntu的安装、导入数据与编码乱码问题。
- Ubuntu与windows解码出现乱码问题的解决
- Windows编码相关知识 & VC与MySQL交互数据乱码问题
- Linux/Windows下MySQL5.6的修改字符集编码为UTF8(解决中文乱码问题)
- 导入oracle数据库结构与表数据中文乱码问题
- mysql导入csv中文数据乱码问题分析与解决
- Java字符的编码解码与乱码问题 Java字符的编码解码与乱码问题
- 关于编码与乱码问题
- 编码集与乱码问题
- Windows版Mysql5.6.11的安装与配置
- Windows版Mysql5.6.11的安装与配置教程
- Windows环境下MySQL5.5的安装与配置
- Windows平台下MySQL5.7.11的安装与配置
- windows下的mysql5.7.20安装与精简
- linux mysql安装与修改字符编码(乱码问题)
- windows mysql5.6 安装与配置
- MySQL5 的安装与卸载
- 计算机的编码问题与数据上溢
- (22)赋值运算符、递增和递减运算符
- 反转链表(非递归)
- 关于grub rescue的使用的记录
- 附件上传的一个插件介绍--- plupload
- Win8系统安装ArcGis Server的过程
- mysql5.7.16 Windows与Ubuntu的安装、导入数据与编码乱码问题。
- 10.31 NOIP模拟赛(morning)
- 语法基础-01java程序运行原理
- Java构造器与继承
- [bzoj 1879] [Sdoi2009]Bill的挑战:状压DP,自创数学公式(?)
- 1116. Come on! Let's C (20)
- Javascript 二维数组去重
- 欢迎使用CSDN-markdown编辑器
- 安卓selector的应用