zoukankan      html  css  js  c++  java
  • 读取CSV数据的集中方式(Java和Oracle)

    CSV数据是一种类似于execl的数据格式,当CSV格式转化为文本格式时,数据会自动使用逗号(,)隔开,但是如果CSV单元格中同时含有逗号,文本格式会用加 “” 的方式予以区分。

    在我们处理只有逗号的文本时,比较简单。当我们处理文本中含有 “” 的逗号时,容易和文本自动添加的逗号混淆,比较困难处理,因此要借助正则表达式来进行处理区分。

    今天对于读取CSV数据的方式做了深入的调查,特在此做一下总结。

    目前本人接触CSV的读取方式可以分为两种,一种为JAVA代码的方式,一种为Oracle的读取方式

    1.JAVA代码的读取方式一般使用split方法

    a.文本中只有逗号

    例:"123","Jack jona","Computer science"

    则直接可以使用

    String[] strArr = str.trim().split(",",-1);

    进行分割处理。

    b.如果文本中在 “” 中含有逗号

    例:"234", "Lee Jack", "Fort myers, FL"

    则需要借助正则表达式来进行区分

    String[] strArr = str.trim().split(",(?=([^\"]*\"[^\"]*\")*[^\"]*$)",-1); //双引号内的逗号不分割 

    2,Oracle的读取方式

    由于Oracle的正则表达式和JAVA中的正则表达式不同,java中的正则表达式支持正向预测,Oracle的正则中只是支持正声明。

    简单的来讲,java中的正则表达式和split结合可以读取符合一段正则规则的字符串(例如 规则为-> ," ")

    而Oracle中的拆分字符串的方法为Regexp_Substr函数,在这里需要说明的是Oracle的截取方式为逐个匹配方式,也就是Oracle会遍历字符串的中的每一个字符 ,像是砍断一样将字符串砍断截取。

    所以目前来说,Oracle的处理csv的方式并没有java方便。

    此为个人见解,如果疑问可以加我讨论。810632986

  • 相关阅读:
    04:布尔表达式
    python中的operator模块
    python习题-4
    北大OJ1001
    [工具]toolbox_graph_laplacian
    [工具]toolbox_graph_normal_displayment
    [工具]toolbox_graph_isomap
    [工具]toolbox_graph_建立欧式距离邻接矩阵
    [工具]toolbox_graph_Floyd算法
    [工具]toolbox_graph_dijkstra算法
  • 原文地址:https://www.cnblogs.com/trylearnIT/p/8028100.html
Copyright © 2011-2022 走看看