mysql数据批量导入和导出

时间:2021-6-4 作者:qvyue

mysql数据批量导入和数据库迁移

将一张表导入另一张表(同一个服务器下的同一个数据库)

  1. 两张表字段一致时
INSERT INTO a_test01 SELECT * FROM a_test;
  1. 两张表有些字段一致时
INSERT INTO a_test02(id,sname)  SELECT id, name AS sname FROM a_test;

这里【起别名(as)】是非常重要的,不然会因为字段不同而报错。

  1. 更新特定字段

有条件

INSERT INTO a_test03(id,sname)  SELECT id, name AS sname FROM a_test WHERE id = 1;

将一个xlsx 文件 导入 指定的表

  1. 该excel表格数据,没有类似 数据字典的字段,纯表面意思
    • 通过navicat 建立数据库,建立对应的表 字段结构
    • 右键 导入向导,选择 xlsx 格式
    • 流程图

      mysql数据批量导入和导出
      1616745129(1).png

      mysql数据批量导入和导出
      000.jpg
  1. 该excel表格数据,有类似 数据字典的字段,需要将映射到表字段,拆分表
    需要java代码实现:
  • 定义一个controller 将来 通过 postman 上传 excel文件
@RestController
public class ExcelController  {

   @Autowired
   private IExcelService excelService;
   //上传表格到数据库
   @PostMapping("/api/common/uploadExcel")
   public AjaxResult uploadExcel( MultipartFile file, Map map) {
       String name = file.getOriginalFilename();
       if (name.length()  list = null;
       try {
           list = ExcelUtils2.excelToList(file.getInputStream());

           for( ExcelBean excelBean : list) {
               if(excelBean != null) {
                   excelService.inertTest(excelBean);
               }
           }

       } catch (IOException e) {
           e.printStackTrace();
       }
       return AjaxResult.success("获取数据成功,并且插入数据库中", list);

   }

   //下载表格

}
  • 定义一个工具类 把文件读取后,存入到数据库中表里
public class ExcelUtils2 {

   //读取excel文件,转换成java list结构
   public static List excelToList(InputStream inputStream) {
       // 1. 定义一个接手的list
       List list = new ArrayList();
       try {
           //2. 定义 一个 工作簿
           XSSFWorkbook workbook = new XSSFWorkbook(inputStream);
           //工作表对象
           XSSFSheet sheet = workbook.getSheetAt(0);
           System.out.println(sheet);
           //总行数
           int rowLength = sheet.getLastRowNum();
           //这个行数 计算时去掉头部的一行
           System.out.println("总行数有多少行" + rowLength);
           XSSFRow row = sheet.getRow(0);
           //总列数
           int colLength = row.getLastCellNum();
           System.out.println("总列数有多少列" + colLength);

           //得到指定的单元格,这计算是从 头部开始计算
           XSSFCell cell = row.getCell(0);
           System.out.println("单元格," + cell);

           for(int i = 1; i 
  • 效果图

优化插入到数据库的性能优化,分表插入等操作

敬请期待

参考链接:
https://blog.csdn.net/qq_31204607/article/details/107385660
https://zhuanlan.zhihu.com/p/209193157
https://www.jianshu.com/p/8356a59dad00

声明:本文内容由互联网用户自发贡献自行上传,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任。如果您发现有涉嫌版权的内容,欢迎发送邮件至:qvyue@qq.com 进行举报,并提供相关证据,工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。