向MySql数据库导入excel表数据
最近要开发一个小的答题系统,如果题目人工录入那确实很麻烦。所以想到是不是可以从用一些现有数据格式的文件导入数据。在网上查了一下,看到有关于将excel的数据导入到mysql的方法。所以将题库数据整理成excel的。
然后另存为.csv格式的文件。
然后在phpmyadmin中选择导入操作。
但是由于插入的数据出现乱码,失败。
查找原因:因为excel默认编码格式为ANSI,而mysql数据库默认的编码方式是utf-8。
解决办法:我是用editplus将.csv格式的文件打开(打开时将“编码”选择为系统默认即可),然后另存为一份编码为utf-8的文件。(我是只用了editplus进行的这个操作,如果还有其他可行并且方便的软件,朋友们也可以留言交流)
然后重新执行导入操作。
所有选项均为默认,导入成功,但是数据表为新建表,并且表明为table 2(该数据库中之前有一张表),并且表的字段名为col1,col2......并且所有字段的类型均为varchar。
检查后发现,在导入数据时,选择完文件后,会有如下提示
勾选上,点击执行。
这次导入的数据表的字段名就是自己在excel中第一行设置的了。
虽然数据导入到mysql中了,但是和我最初的目的仍有稍许偏差,我是想将excel表中的数据,导入到数据库中对应表中。
仔细分析后,发现问题可能在于选择导入时,目录级别有问题。
前两次选择导入操作的时候,都是在database下操作的。
这次在localhost》database》table下选择导入操作。
一上来就报错,不过貌似数据插入的位置对了。根据提示,错误是主键列。我再新建表的时候,主键列设为自增。
先将自增属性去掉试试。
依然报错。
再将主键去掉试试。
数据终于插入进去了,不过excel表中第一行列名也被当做输入插入到数据库中了。 而且编号是从0开始的,这可能是刚才报错的原因。
为了找出真正原因,重新测试。将表删除重新建立一张空表。
打开之前另存为utf-8编码的.csv文件,将列名的一行删除并保存文件。
顺利插入,大功告成,吼吼。