今天由于项目需要,需要将大量的数据由Excel导入mysql数据库,网上手机一一些资料,发现有的资料自己在实现过程中根本无法实现,开始是编码问题,出现乱码,后来是有的结果无法正常显示。查阅官方文档,只是简单介绍了一下,仍然没能解决,做了一个晚上,特意写篇博客总结一下,跟大家交流讨论一下啊。可以提供解决方法
1,首先解决编码问题,既mysql根excel,txt等的编码必须一直,否则就会出现乱码。这里统一设置为UFT-8.为什么,大家有兴趣可以看这篇博客的介绍。
1)设置mysql的编码,启动mysq,后输入下面的命令
show variables like 'character_set_database'; //显示数据库的现在编码
alter database xxx CHARACTER SET utf8; //xxx为您的数据库名称
运行效果截图所示:
2)设置excel的编码为utf8
点击文件---》另存为---工具---web—编码,选择utf8,点击确认。
操作示意图:
2,接下来是导入到mysal
1)将excel另存问txt,利用语句 :
load data local infile 'F:\\data\\test.txt' into table testexcel fields terminated by "\t"
lines terminated by '\r\n';
我具体操作老师失败,显示不全,这也是网上找到最多的操作,做了很长时间,还是没成功。
截图所示:
开始推断是终止语句的原因,但试了好几次都没成功,具体原因没有找到。坑啊
2)利用csv文件,根txt差不多,只是导入语句稍作调整,
load data local infile 'F:\\data\\test.csv' into table testexcel fields terminated by "\n"
结果也是没有成功。
3)利用php程序,没有尝试
4)借助软件,官方的excel for mysql ,还有其他很多,但一般是收费的,天国可以找到破解的,挺好用。我用的是Navicat for mysql,操作简单高效。
Excel, txt,csv,xml都可以。
下面以excel为例:
点击连接弹出下面的选项:
输入自己的连接名,和数据库的账号和密码点击确定即可。
随后会显示出下面的界面:
选择其中的一个数据库,点击:
选择表,右键,弹出选项框,选择导入向导,进入下面:
选择你要导入的原始数据格式,点击下一步:
第一个为导入的excel文件,表为excel里的工作表,选择一个,进入下一步:
第一个栏名称,既表头的类别,最好用英文,在第一行就选第几行,第一个数据,为要导入的数据的起始行,其他不变,仍然点击下一步:
进入要导入的栏的设置,可以设置数据格式,长度,主键值等,进入下一步:
选择默认的即可,不用操作,更新表达或重新输入,更加说明操作就ok
选择开始,就开始导入数据,一会显示成功,点击关闭,再次刷新,成功看到数据。
。
5)结合前面的自己试的。
I首先新建一个文本文件,用代码编辑等工具将格式设置为utf8,我用的notepad,这一步一定要先与复制数据。
II将要导入的数据复制,粘贴到里面保存就行。
III,接下来首先创建表格,然后导入。具体的我保存在一个文本文件里,这样便于修改和编辑。
命令行如下:
create table if not exists testexcel (
name varchar(20) not null,
class varchar(20) not null,
studentId varchar(20) not null,
major varchar(20) not null,
sex enum('男','女') not null,
phonum varchar(20) not null ,
bodyNum varchar(20) not null
);
load data local infile 'F:\\data\\test.txt' into table testexcel fields terminated by "\t"
lines terminated by '\r\n';
select * from testexcel;
运行:
Source ..\data\*.txt
测试成功。但第一一个名字老是有一个?,不知道原因。
好了,今天就写到这。大家后面做出来给我留言