当前位置: 首页 > news >正文

上海大型网站开发公司产品推广公司

上海大型网站开发公司,产品推广公司,六安做网站,wordpress dux主题需求#xff1a;客户上传CSV文档#xff0c;要求CSV文档内容查重/插入/更新相关数据。 框架#xff1a;jdbcTemplate、commons-io、 DB#xff1a;oracle 相关依赖#xff1a; 这里本来打算用的2.11.0#xff0c;无奈正式项目那边用老版本1.3.1#xff0c;新版本对类型…需求客户上传CSV文档要求CSV文档内容查重/插入/更新相关数据。 框架jdbcTemplate、commons-io、 DBoracle 相关依赖 这里本来打算用的2.11.0无奈正式项目那边用老版本1.3.1新版本对类型支持和转换好一点。不过无伤大雅。 dependencygroupIdcommons-io/groupIdartifactIdcommons-io/artifactIdversion1.3.1/version/dependencyCSV文档格式 Xxx Code,Yerial,OP 600001,2024082400305, OP20240818_XDFD 600001,2024082400306, OP20240818_XDFD 600001,2024082400307, OP20240818_XDFD 600001,2024082400308, OP20240818_XDFD 600001,2024082400309, OP20240818_XDFD 600001,2024082400310, OP20240818_XDFD 600001,2024082400311, OP20240818_XDFD 600001,2024082400312, OP20240818_XDFD 600001,2024082400313, OP20240818_XDFD 600001,2024082400314, OP20240818_XDFD 600001,2024082400315, OP20240818_XDFD 600001,2024082400316, OP20240818_XDFD 600001,2024082400317, OP20240818_XDFD 600001,2024082400318, OP20240818_XDFD 600001,2024082400319, OP20240818_XDFD 600001,2024082400320, OP20240818_XDFD 600001,2024082400321, OP20240818_XDFD 600001,2024082400322, OP20240818_XDFD 600001,2024082400323, OP20240818_XDFD 600001,2024082400324, OP20240818_XDFD 600001,2024082400325, OP20240818_XDFD接口 用MultipartFile接受CSV文件 PostMapping(/import)public ResponseEntityBaseResponse? importCSV(RequestBody MultipartFile files) {xxxService.importSerial(files);return new ResponseEntity(new BaseResponse(), HttpStatus.OK);}前段需要在Request-Body中以form-data的形式上传文档 CSV解析 简单转成Json private String convertCsvToJson(MultipartFile multipartFile) throws IOException {// read csv as listListString lines IOUtils.readLines(multipartFile.getInputStream(), UTF-8);ListListString data lines.stream().skip(1) // skip label line.filter(line - !line.trim().isEmpty()) // filtering empty line.map(line - Arrays.asList(line.split(,))).collect(Collectors.toList());return objectMapper.writeValueAsString(data);}转换后是这样的 注意这是print出来的json对象本来应该是json字符串。 [[600001,2024082400305,OP20240818_XDFD],[600001,2024082400306,OP20240818_XDFD],[600001,2024082400307,OP20240818_XDFD],[600001,2024082400308,OP20240818_XDFD],[600001,2024082400309,OP20240818_XDFD],[600001,2024082400310,OP20240818_XDFD],[600001,2024082400311,OP20240818_XDFD],[600001,2024082400312,OP20240818_XDFD],[600001,2024082400313,OP20240818_XDFD],[600001,2024082400314,OP20240818_XDFD],[600001,2024082400315,OP20240818_XDFD],[600001,2024082400316,OP20240818_XDFD],[600001,2024082400317,OP20240818_XDFD],[600001,2024082400318,OP20240818_XDFD],[600001,2024082400319,OP20240818_XDFD],[600001,2024082400320,OP20240818_XDFD],[600001,2024082400321,OP20240818_XDFD],[600001,2024082400322,OP20240818_XDFD],[600001,2024082400323,OP20240818_XDFD],[600001,2024082400324,OP20240818_XDFD],[600001,2024082400325,OP20240818_XDFD] ]以clob参数的形式传到oracle存储过程中处理 public void import(MultipartFile files) {final int[] status new int[1];Object result jdbcTemplate.execute(new ConnectionCallbackObject() {Overridepublic Object doInConnection(Connection con) throws SQLException, DataAccessException {CallableStatement cs con.prepareCall({call TEST_PACKAGE.pro_add_csv_data(?, ?)});Clob clob con.createClob(); // 创建一个Clob对象try {String s convertCsvToJson(files); // csv 转 json字符串clob.setString(1, s); // 把json字符串封装进clob对象中cs.setClob(1, clob); // 入参cs.registerOutParameter(2, Types.INTEGER); // 出参cs.execute();status[0] cs.getInt(2); // 取结果} catch (IOException e) {throw new RuntimeException(Import failed.);}return null;}});}存储过程 PROCEDURE pro_add_csv_data(v_data_list IN CLOB,v_status OUT NUMBER) AS v_code VARCHAR2(10); v_yerial VARCHAR2(20);v_op VARCHAR2(20);v_cur SYS_REFCURSOR;EXC_EXIST EXCEPTION;v_count NUMBER;v_ref VARCHAR2(30) : TO_CHAR(SYSDATE, YYYYMMDDHH24MI); BEGIN -- 解析成表OPEN v_cur FOR SELECT jt.* FROM ( SELECT j.* FROM JSON_TABLE( v_data_list , $[*] COLUMNS (code VARCHAR2(10) PATH $[0], yerial VARCHAR2(20) PATH $[1], op VARCHAR2(20) PATH $[2] ) ) j ) jt; -- 遍历插入LOOP FETCH v_cur INTO v_code, v_yerial, v_op; EXIT WHEN v_cur%NOTFOUND;INSERT INTO table_oneVALUES( v_code,v_yerial,v_op);END LOOP;COMMIT;CLOSE v_cur;v_status : 0; EXCEPTION WHEN EXC_EXIST THEN ROLLBACK;v_status:2;WHEN OTHERS THENROLLBACK;v_status:1; END pro_add_csv_data;完美
http://www.zqtcl.cn/news/370849/

相关文章:

  • 专业金融网站建设wordpress匿名投稿
  • 生产做网站表带的制造厂家百度文库个人登录
  • 丰都网站建设费用成都品牌包装设计
  • 建设项目安监备案网站免费学生网页制作成品代码
  • wordpress默认登陆地址修改廊坊百度关键词优化怎么做
  • 免费下载策划书的网站外贸网站 域名后缀
  • 网站导航条做信息网站需要什么
  • 网站推广朋友圈文案嵩县网站建设
  • 网站建设实践考试试题app运营推广策划方案
  • django网站开发源码阿里邮箱登录
  • 机床网站建设网站关键词优化怎么做
  • 全网营销一站式推广wordpress新文章加new
  • 做网站哪个系统最安全长沙简界网络科技有限公司
  • 象山县城乡和住房建设局网站上海公司牌照最新价格
  • 复旦学霸张立勇做的网站开一个公司需要多少钱
  • 专业建设公司网站软件技术培训
  • 网站建设_聊城笑话小网站模板html
  • 智能建造师威海网站优化推广
  • 做网站如何选域名长沙房价2020最新价格
  • seo网站推广济宁一建建设集团有限公司
  • 高端大气网站设计欣赏有意思网站推荐
  • 什么网站做海宁的房产好北控京奥建设有限公司网站
  • 上海网站建设网络推广网页搜索框下记录删不掉
  • 团购网站大全做相册手机网站如何制作免费
  • 承德网站制作方案百度seo关键词排名s
  • 网站建设公司佛山国内网站推广
  • 辽宁网站制作公司潍坊网站建设维护
  • 手机网站图片切换平面图网站
  • 松岗建设网站广州网站定制开发方案
  • 东阳网站建设价格做理财的网站有哪些问题