将Excel数据导入mysql数据库的几种方法

“我的面试感悟”有奖征文大赛结果揭晓!

前几天需要将Excel表格中的数据导入到mysql数据库中,在网上查了半天,研究了半天,总结出以下几种方法,下面和大家分享一下:

一.用java来将Excel表格中的数据转到mysql中

这是我们用的第一种方法,就是在java找你感谢个类,然后这个类会将Excel表格中的数据存储到内存里,然后再从内存中读出来插入到数据库中,但是要 注意了,这里是存储到String[ ]数组里面,所以取出来的数据也是String类型,如果你的表里面有int类型的数据,那么你一定要将那一条取出来然后强制转换,如果你的数据表结构没 有那么复杂,比较简单的话那么可以使用这种方法,如果字段的结构复杂那也可以使用,只不过要慢慢转,多写点代码,不怕累的同志可以试试.下面是我从网上查 的代码:

1、添加POI jar包到项目的lib目录下­

2、Excel文件目录:d://excel.xls­

3、数据库字段为:num1 num2 num3 num4 num5 num6­

4、数据库名:blog­

5、表名:test­

6、编写类:连接mysql的字符串方法、插入的方法、实体类­­

import java.io.FileInputStream;­

import java.io.FileNotFoundException;­

import java.io.IOException;­

import org.apache.commons.logging.Log;­

import org.apache.commons.logging.LogFactory;­

import org.apache.poi.hssf.usermodel.HSSFCell;­

import org.apache.poi.hssf.usermodel.HSSFRow;­

import org.apache.poi.hssf.usermodel.HSSFSheet;­

import org.apache.poi.hssf.usermodel.HSSFWorkbook;­

public class TestExcel {­

//记录类的输出信息­

static Log log = LogFactory.getLog(TestExcel.class); ­

//获取Excel文档的路径­

public static String filePath = "D://excel.xls";­

public static void main(String[] args) {­

try {­

// 创建对Excel工作簿文件的引用­

HSSFWorkbook wookbook = new HSSFWorkbook(new FileInputStream(filePath));­

// 在Excel文档中,第一张工作表的缺省索引是0,­

// 其语句为:HSSFSheet sheet = workbook.getSheetAt(0);­

HSSFSheet sheet = wookbook.getSheet("Sheet1");­

//获取到Excel文件中的所有行数­

int rows = sheet.getPhysicalNumberOfRows();­

//遍历行­

for (int i = 0; i < rows; i++) {­

// 读取左上端单元格­

HSSFRow row = sheet.getRow(i);­

// 行不为空­

if (row != null) {­

//获取到Excel文件中的所有的列­

int cells = row.getPhysicalNumberOfCells();­

String value = "";     ­

//遍历列­

for (int j = 0; j < cells; j++) {­

//获取到列的值­

HSSFCell cell = row.getCell(j);­

if (cell != null) {­

switch (cell.getCellType()) {­

case HSSFCell.CELL_TYPE_FORMULA:­

break;­

case HSSFCell.CELL_TYPE_NUMERIC:­

value += cell.getNumericCellValue() + ",";         ­

break;   ­

case HSSFCell.CELL_TYPE_STRING:­

value += cell.getStringCellValue() + ",";­

break;­

default:­

value += "0";­

break;­

}       ­

// 将数据插入到mysql数据库中­

String[] val = value.split(",");­

TestEntity entity = new TestEntity();­

//现在开始数据转换啦!!!!!!*************************************************

double a = Double.parseDouble(val[0]);

long code = (long)a;

entity.setNum1(code);­

entity.setNum2(val[1]);­

entity.setNum3(val[2]);­

entity.setNum4(val[3]);­

entity.setNum5(val[4]);­

entity.setNum6(val[5]);­

TestMethod method = new TestMethod();­

method.Add(entity);­

} catch (FileNotFoundException e) {­

e.printStackTrace();­

} catch (IOException e) {­

e.printStackTrace();­

我们的数据库实在是太复杂,所以这个方法bye-bye了!!!

二.手动进行Excel数据和MySql数据转换

这个方法也是从网上查到的,比第一种要简单一些,一个命令就搞定,下面copy给大家:

假如要把如图所示的Excel表格导入到MySql数据库中,如图:

步骤一:

选取要导入的数据快儿,另外要多出一列,如下图:

步骤二:

将选中的数据快儿拷贝到一个新建的表格工作薄,然后“另存为” -》“文本文件(制表符分割)(*.txt)”,假如存到“D:data.txt”这个位置里。如图:

步骤三:

根据要导入的数据快儿建立MySql数据库和表,然后使用命令

load data local infile 'D:data.txt' into table exceltomysql fields terminated by 't';

进行导入操作。如下图:

现在数据已经全部导入到MySql里了,

让我们来select一下吧,如图:

到此,数据由Excel到MySql的转换已经完成。

下面说下,数据从MySql到Excel的转化,其过程其实还是借助那个“制表符分割”的文本文件。

将如要将这个表中的男生信息导入到Excel中,可以这样。

select * into outfile 'D:man.txt' from exceltomysql where xingbie="男";

如图:

这样,表中所有男生的信息都被输出到以制表符分割,'n'结尾的文本文件D:man.txt文件中。

你可以打开Excel,然后选择“数据”->“导入外部数据”->“导入数据”,选中“D:man.txt”,一路确定就行了。

好了,这个方法我们也是过了,可行度倒是可以,但是我们还是遇到了一个问题,那就是当我们导入有汉字的数据时,数据库的那个字段显示不了,有一点点乱码, 但很多是空,不知道为什么,字段的属性是varchar,没错的,所以这一问题没有解决,我们只好又换!!!知道怎么回事的同学指点指点啊,先谢谢 了!!!

三.软件导入

哈哈,这个方法是最爽的,我们终于搜到了一个这么方便的东东,名字叫"xls2sql",大家去百度一下也可以搜到,下下来用就是了,但是问题还是接踵而 至啊,真是超级郁闷!!就是你在到如数据的时候他会跟你的Excel自动建表,然后字段属性也是很智能的帮你完成,完全就是一款傻瓜软件,可是我们的表已 经建好了,字段属性也已经完成,它没那么听话我们也只好另寻他法了,无奈啊..........

四.csv导入

这是我们最终采取的方法,就是你先从mysql数据库中导出csv的空数据表,然后再把Excel中的数据复制到相应的csv表格中,然后再用mysql 导入csv数据表...不过这里也有点小麻烦,就是有的时候csv表格保存的时候他会出错,你再打开的时候可能他会把多有的数据都挤到第一列去,没有关 系,在mysql插入数据的时候选择制表键就可以了~~,如果cvs中的数据排列正常的话那就什么都不用选,插入的时候默认选择是字符....

将Excel数据导入mysql数据库的几种方法的更多相关文章

  1. 【MySQL笔记】Excel数据导入Mysql数据库的实现方法——Navicat

    很多公司尤其有点年头的公司,财务业务部门的各种表单都是excel来做的表格,随着互联网的发展各种业务流程都电子化流程化了,再在茫茫多的文档中去查找某一个年份月份的报告是件相当枯燥的事,所以都在想办法将 ...

  2. excel数据导入mySql数据库

    1.将excel数据保存好 2.打开数据库,在表上点击右键,选择导入向导 3.点击下图中红色部门,点击下一步 4.选择excel文件的位置,下方的表空间内,会出现excel中的sheet页,选择要导入 ...

  3. Excel连接到MySQL,将Excel数据导入MySql,MySQL for Excel,,

    Excel连接到MySQL 即使当今时代我们拥有了类似微软水晶报表之类的强大报表工具和其他一些灵活的客户管 理应用工具,众多企业在分析诸如销售统计和收入信息的时候,微软的Excel依然是最常用的工具. ...

  4. navcat excel数据导入mysql的方法

    navcat excel数据导入mysql的方法 先navcat导出 xls格式 然后把数据复制到往这个xls里 (按照这个xls格式) 然后导入mysql就行了 如果导入的过程无法识别excel里的 ...

  5. 把execel表数据导入mysql数据库

    今天,是我来公司第二周的第一天. 作为新入职的实习生,目前还没适合我的实质项目工作,今天的学习任务是: 把execel表数据导入到mysql数据库,再练习下java操作JDBC. 先了解下execel ...

  6. 利用TOAD实现把EXCEL数据导入oracle数据库

    利用TOAD实现把EXCEL数据导入oracle数据库 工具:   Toad11.7z(百度搜索,直接下载) 1.将Excel文件中某些字段导入到Oracle数据库的对应表 连接想要导入的数据库 ,然 ...

  7. c#将Excel数据导入到数据库的实现代码

    这篇文章主要介绍了c#将Excel数据导入到数据库的实现代码,有需要的朋友可以参考一下 假如Excel中的数据如下: 数据库建表如下: 其中Id为自增字段: 代码: 代码如下: using Syste ...

  8. PHP把excel导入mysql数据库最常用的方法

    Posted on 2011-03-25 09:16 PHP博客 阅读(1316) 评论(0)  编辑 收藏 引用 网摘 PHP把excel(xls)文件导入mysql数据库最常用的方法就是先把xls ...

  9. java实现EXCEL数据导入到数据库中的格式问题的解决

    之前作为项目甲方,加之java接触不多,在java web开发方面都是打下手的份. 对于EXCEL数据导入到数据库这个问题一直老是出现格式原因而导入失败也是未免惆怅,开发团队也是只说回去检查一下格式. ...

随机推荐

  1. JMeter参数化(一)

    JMeter参数化的4种方法:

  2. Codeforces Round #375 (Div. 2) - B

    题目链接:http://codeforces.com/contest/723/problem/B 题意:给定一个字符串.只包含_,大小写字母,左右括号(保证不会出现括号里面套括号的情况),_分隔开单词 ...

  3. js:方法1. 数组

    Array.every() array.every(f); array.every(f, o); f(array[i], i, array) [1,2,3].every(function(x) { r ...

  4. Java数组课后作业

    1.运行TestArrays.java,了解Arrays中的一些重要方法的用法. Arrays.equals(a 1, a2):判断数组是否相等. int[] b = Arrays.copyOf(a, ...

  5. html中frameset的详细使用方法

    http://blog.csdn.net/csb5201314/article/details/5695417

  6. HDU5855 Less Time, More profit(最大权闭合子图)

    题目 Source http://acm.hdu.edu.cn/showproblem.php?pid=5855 Description The city planners plan to build ...

  7. The name does not exist in the namespace error in XAML

    方法1:In the solution property page, check the platform of the assembly that contains "UpdatingMe ...

  8. ural 1142. Relations

    1142. Relations Time limit: 1.0 secondMemory limit: 64 MB Background Consider a specific set of comp ...

  9. 【CQgame】[下一百层] [Down]

    简单的下一百层的c++实现,代码一晚上就码完了 注意:游戏前请在 默认值 或 属性 中调整缓冲区大小,否则会输出爆屏,方法写在代码里了 觉得速度 快/慢 的可以在第 23 行手动改一下,相信大神们能看 ...

  10. 【JAVA】ConcurrentHashMap

    HashTable 写操作时候,Lock全表    源码:  public synchronized V put(K key, V value) {  // Make sure the value i ...