zoukankan      html  css  js  c++  java
  • 利用csv文件批量编辑更新sql

       历史表(popularity_ranking)数据中只存了用户手机号,业务需求中需要新增用户昵称字段,

    这里我们用户表和popularity_ranking表在不同数据库中,有两种方法:1.编写后台服务调用不同数据库,

    进行sql更新;2.导出csv文件修改sql。因为项目并没有采用多数据源配置,而且表数据量不大,这里我们

    采用导出用户表数据,然后根据用户id,昵称批量修改sql导入到popularity_ranking表中。

    1.从oracl中导出要用到的字段

     2.使用CsvReader进行sql重写

    package zhx.com;
    
    import com.csvreader.CsvReader;
    import com.csvreader.CsvWriter;
    
    import java.io.IOException;
    import java.nio.charset.Charset;
    import java.util.ArrayList;
    
    /**
     * @Author: SimonHu
     * @Date: 2019/11/18 10:16
     * @Description:
     */
    public class SwitchSql {
        public static void main(String[] args) throws IOException {
            ArrayList<String[]> csvList = new ArrayList<String[]>(); //用来保存数据
            //注明:或者可以通过前端上传的文件,用一个方法获取上传文件名uploadName(String)
            String csvFilePath = "C:\Users\admin\Desktop\222.csv";
            String csvWriteFilePath = "C:\Users\admin\Desktop\write.csv";
            CsvReader reader = new CsvReader(csvFilePath, ',', Charset.forName("UTF-8"));    //解决中文编码
    //             reader.readHeaders(); // 跳过表头   如果需要表头的话,不要写这句。
            while (reader.readRecord()) { //逐行读入除表头的数据
                csvList.add(reader.getValues());
            }
            reader.close();
            CsvWriter csvWriter = new CsvWriter(csvWriteFilePath, ',', Charset.forName("UTF-8"));
         //保证输出字符串带引号
         //csvWriter.setForceQualifier(true);
         //指定文本限定符
         //csvWriter.setTextQualifier('"');
        
    for (int row = 0; row < csvList.size(); row++) { String cell0 = csvList.get(row)[0]; String cell1 = csvList.get(row)[1]; String sql = "update popularity_ranking set nick_name='" + cell1 + "' where user_id =" + cell0 + ";"; String[] contents = {sql}; csvWriter.writeRecord(contents); System.out.println(sql); } csvWriter.close(); } }

    重写之后的sql文件就出来了

  • 相关阅读:
    vue项目锚点定位+滚动定位
    elementUI 弹出框添加可自定义拖拽和拉伸功能,并处理边界问题
    密码检验规则(字母数字和特殊字符组成的混合体)
    分布式版本控制系统git
    自动生成滚动条
    jq中append(),appendTo(),after(),before(),prepend(),prependTo()的用法
    清除浮动的几种方式
    王者荣耀周年福利活动绕过微信屏蔽
    看不懂源码?先来恶补一波Object原型吧
    Vue组件化开发
  • 原文地址:https://www.cnblogs.com/SimonHu1993/p/11880734.html
Copyright © 2011-2022 走看看