2013年末一次数据异常处理

VS2013 ADO.NET 连接 SQLEXPRESS 开发环境:VS2013 + SQLEXPRESS 出现问题:网站 Web.config 已经配置了connectionString,但是不知道怎么用代码连接 解决方案:ADO.NET连接数据库的方式有两种:一是直接写出connectionString,一是引用 Web.config 中的connectionString,这里我们使用第二种方式。 首先我们已经在项目的 App_ 阅读详情

       这周五临近下班的点,收到份任务——处理日期格式异常数据。那一刻我开始缅怀我那即将加班的周末。好吧,说一下这个任务的具体内容。XX公司dump一份数据过来,我们将数据导入自己的库然后开始清理日期格式异常数据然后再把他导出来还给XX公司。听起来挺简单的。当然后面会遇到意想不到的问题。且听下文分解。

       周六中午,和往常加班一样我慢悠悠地出现在偌大空旷的办公室。从邮件下载dump文件,数据导入,一切进行的风平浪静。导数据的时候甚至还在想下午四点前能结束战斗出去找人冬至打边炉呢。然后噩梦就开始。

       数据导入完成后,剩下的就是如何替换格式的问题了。第一步是将数据查询出来。低头一看,好家伙!日期格式异常的字段保存在一个凭证化的XML报文里。凭证信息又以zip形式存放在表中BLOB类型的data字段。这绝对是一次大字段存取的考验。菜都准备好,准备开工吧。

       作为一个Javaer,我熟练地打开Eclipse开始寻找有没有已经写好的工具类。很不幸我们没有没有找到能用的工具类。自己写的BLOB字段读写方法读出来的是乱码。分析原因是XX公司存数据的时候使用了Zip压缩字节流。然后开始找度娘、谷哥帮忙。几番搜索,感谢度娘为软件事业做出的贡献。代码如下:

       从BLOB字段中读出Zip压缩过的内容:

    public staticString ClobToString(BLOB blob) {
        StringreString = "";
        ZipInputStreamzin = null;
        ZipEntryentry = null;
        InputStreammsgContent = null;
        BufferedReaderbr = null;
        StringBuffersbf = new StringBuffer();
        try {
            msgContent= blob.getBinaryStream();
            zin= new ZipInputStream(msgContent);
            while(zin!=null && (entry=zin.getNextEntry())!=null){
              if(entry.isDirectory()||entry.getName().equals("..\\")){
                  continue;
              }
              String testString =entry.getComment();
              br = newBufferedReader(newInputStreamReader(zin));
              String line; 
              while((line = br.readLine()) !=null) {
                 sbf.append(line);
              }
            }
            if(zin!=null) {
                try {
                    zin.close();
                }catch (IOException e) {
                    e.printStackTrace();
                }
            }
            if(msgContent!=null) {
                try {
                    msgContent.close();
                }catch (IOException e) {
                    e.printStackTrace();
                }
            }
            if(br!=null) {
                try {
                    br.close();
                }catch (IOException e) {
                    e.printStackTrace();
                }
            }
        }catch (Exception e) {
            e.printStackTrace();
        }
        reString= new String(sbf);
        returnreString;
    }
 

       将btyes数组Zip压缩:

    public static byte[]zipBytes(byte[] bytes)throwsIOException {
       ByteArrayOutputStream tempOStream = null;
       BufferedOutputStream tempBOStream = null;
       ZipOutputStream tempZStream = null;
       ZipEntry tempEntry = null;
       byte[] tempBytes =null;
 
       tempOStream = newByteArrayOutputStream(bytes.length);
       tempBOStream = newBufferedOutputStream(tempOStream);
       tempZStream = newZipOutputStream(tempBOStream);
       tempEntry = new ZipEntry(String.valueOf(bytes.length));
       tempEntry.setMethod(ZipEntry.DEFLATED);
       tempEntry.setSize((long) bytes.length);
       
       tempZStream.putNextEntry(tempEntry);
       tempZStream.write(bytes, 0, bytes.length);
       tempZStream.flush();
       tempBOStream.flush();
       tempOStream.flush();
       tempZStream.close();
       tempBytes = tempOStream.toByteArray();
       tempOStream.close();
       tempBOStream.close();
       return tempBytes;
   }
 

     接下来就是Mybatis的事情了。

<?xmlversion="1.0"encoding="UTF-8"?>
<!DOCTYPEmapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
 
<mappernamespace="org.mybatis.example.ChangXmlMapper">
   
    <selectid="selectALLBloB"resultType="map"parameterType="map">
        SELECTDATAID,DATA FROM XML_DATA
        <!--SELECT DATAID,DATA FROM XML_DATA WHERE FINISHED IS NULL AND DATAID NOTIN('20113120610007033985') -->
    </select>
   
    <selectid="selectBloB"resultType="map"parameterType="map">
        SELECTDATA FROM XML_DATA WHERE DATAID = #{DATAID}
    </select>
   
    <updateid="updateBloB" parameterType="map">
        UPDATEXML_DATA SET DATA = #{DATA,jdbcType=BLOB},FINISHED = #{FINISHED} WHERE DATAID =#{DATAID}
    </update>
 
</mapper>

       头疼的事情来了。怎么对错误格式进行有效的查找和替换呢?XX公司还要求对不同的品目要有特殊的处理。刚开始都觉得使用正则表达式就可以搞定了。用正则表达式查找出各种异常的数据格式再根据替换为YYYY-MM-DD的正确格式。但是用HashSet找了一下部分数据的异常格式类型。点号分隔的、乱序的、全角字符的、中文汉字的、斜杠分隔的,什么鬼都有。心情顿时哇凉哇凉的。

 
2013.10-31;11月1日;2012年9月1日;11/30/2010;11/30/2011;11/30/2012;11/30/2013;2013-09-1;09.30;1013-11-01;2013-9-30;11/2/2013;2013年09月30日;2013-09-30;2013-10-31;1013-09-01;0;Friday, November01, 2013;2013-10.31;1/1/2013;2013年9月30日;2013-09-01;2013-011-01;11/30/3013;2013-09-01;11-01;11月30日;10.1;10-01;11/1/2103;2013年10月30日;2013 -10-01;2013-10-02;2013-10-01;2013-12-1;10.01;2013-12-31;2013-10-04;2013-11-30;2013-10-03;2013-10.01;2013-10-1;2013—10—01;2013年8月31日;2013-10-31;2013-09-30;2013年10月31日;10/31/2013;11/30/2310;09-01;2013年10月1日;9.30;2013-10-31;2013-10-30;2013/11/01;Nov-13;2013-011-30;09-31;201310-01;09-30;2013-11-01;12/1/2013;2013-10-301;2013-11-1;2013-10-1;013.10.01;2013-11-01;2013-10-2;2013-10-3;11/1/2013;8月31日;11/1/2011;2013-09-30;2013-9-30;2013-10-01;2013-10-0;2013-09-01;08-31;2013-09-02;11-30;2013-10-32;2013-10-31;2013-10-33;9.1;2013-10-34;10/1/2013;9/30/2013;10/30/2013;12/31/2013;2013-11-31;201309-01;2013-11-30;201310-1;8月1日;2/3/1901;3013-09-01;2013年09月01日;013.10.31;9/1/2013;2013年9月1日;2013年8月1日;2013-09-01;2013-09-30;2013-09-31;2013-9-1;2013年11月30日;10.31;2013-01;2013-10-61;2013.10.01;10-31;2013-11-30;2013—10—31;Saturday, November 30, 2013;201311-01;2013-11 -01;2013年10月01日;2013-10-01;2013年11月1日;201310-31

       那么多乱七八糟的格式要写多少正则表达式啊。表达式写错了又该怎么查出来。还有正则表达式该怎么读取到其上层节点的数据做出判断呢?转念一想,这不是XPath应该干的活么?我们最终抛弃了正则表达式这个好帮手,找到了VTD来解析XML(我问过度娘和谷哥,VTD这个技术貌似使用的范围很小。有时候在怀疑是不是只剩下我们公司自己在用这个了)。

       首先将所有出现的格式异常和其对应的修改方案构建一个Map对象(key为出现的错误日期格式,value为正确的格式)。这种做法很挫但是很直接。

        Stringsource = "Sunday, September 01,2013:2013-09-01;2013-11-1:2013-11-01;11/30/2013:2013-11-30;11/1/2013:2013-11-01;";
        String[]sourceArray = source.split(";"),temp;
        HashMapmodifyer=new HashMap();
        for(Strings:sourceArray){
            temp=s.split(":");
            modifyer.put(temp[0],temp[1]);
        }
      

       替换的代码为

try{
String sourceXML =SerializeUtil.ClobToString(returnValue);
    VTDGenvg = new VTDGen();
    vg.setDoc(sourceXML.getBytes("UTF-8"));
    vg.parse(true);
    VTDNavvn = vg.getNav();
    AutoPilotap = new AutoPilot(vn);
    XMLModifierxm = new XMLModifier(vn);
   
    ap.selectXPath("//parentNode[condiction='xxxx']/childNode");
    while(ap.evalXPath()> -1){
        error= vn.toString(vn.getText());
        right= (String)modifyer.get(vn.toString(vn.getText()));
        if(right!=null){
            xm.updateToken(vn.getText(),right);
            ErrorLog.append(dataId+""+"出现"+error+"类型错误,已更改为"+right+";\n");
        }
        ByteArrayOutputStreamos = new ByteArrayOutputStream();
        xm.output(os);
        sourceXML=os.toString();
        os.flush();
        os.close();
               
        byte[]xx = SerializeUtil.zipBytes(sourceXML.getBytes());
        HashMap<String,Object>map1  =newHashMap<String,Object>();
        map1.put("DATA",xx);
        map1.put("DATAID", dataId);
        map1.put("FINISHED", "Y");
        session.update("org.mybatis.example.ChangXmlMapper.updateBloB",map1);
        session.commit();
    }
}catch(Exception e) {
    e.printStackTrace();
}
 

       正当以为大功的时候,VTD报了

at com.ximpleware.XMLModifier.quickSort(XMLModifier.java:1965)

       我们查看了一下报文。发现这是一个大数据报文,存为XML文件都占了几兆空间。应该是VTD在生成XML对象时出现了JVM内存不足。这是个硬伤啊,我那个小破本已经到极限了还是报内存不足。好在,大数据的报文不多,先把大数据的条目跳过后面再手动处理吧。

       手动处理大数据报文就只能靠工具了。我用的是Editplus(有用过Editplus处理过上百兆的SQL语句,速度还不错)。用异常格式查找替换为正确的格式,相当吐血。然后再用Java读取文件生成字节流update回去。已经没血可吐了。

       dump导出修改后的表,发邮件出去。打完收工。但愿不要再出这种问题了。这里写下来只是为了留念。绝对没有再让这程序跑的意思。午夜下班的程序猿伤不起啊。
SpringBoot统一数据返回格式 & 统一异常处理 统一数据返回格式 & 统一异常处理 阅读详情

相关推荐

构建VS2013 C#和Access数据库交互应用

ADO.NET是.NET框架中用于数据访问的组件库,它提供了访问和操作数据的功能。ADO.NET的架构基于数据提供者(data provider)和连接对象(connection object),这使得应用程序能够与数据源进行交互。数据提供者是针对特定类型数据源的组件,它实现了与数据源交互所需的所有功能。数据提供者由以下几个核心对象组成:Connection对象:建立与数据源的连接。Command对象:用于执行查询、存储过程以及发送或接收数据。DataReader。

weixin_30356433的博客 743

自定义配置文件读取产生的“无法添加已属于该配置的 ConfigurationSection”异常解决办法...

  最近在编写一个读写自定义配置文件的功能时遇到一个问题,在初始化的时候读入配置显示出来,修改后把配置回存到配置文件,在回存的时候,先移除配置节,再添加,在添加的时候遇到如下的异常: {"无法添加已属于该配置的 ConfigurationSection。"} 经过一番搜索在网上找到了问题的原因和解决办法。 造成这个异常的原因是我的自定义的ConfigurationSection已经连接到了Syst...

weixin_34342578的博客 359

通达OA2013考勤机同步功能深入解析及代码实践

通达OA2013系统是集成了办公自动化管理、邮件系统、人事管理系统等多种办公功能的综合信息平台。考勤机同步功能是该系统中的关键组成部分,它支持与多种考勤硬件设备的通讯,实现考勤数据的自动化收集与管理。此功能可以有效减轻人力资源部门的工作负担,确保考勤数据的准确性和实时性。在本章,我们将重点介绍通达OA2013系统的基本架构,并对考勤机同步功能的原理和操作步骤进行详细解析。通过这一章节,读者可以了解如何设置和使用通达OA系统来完成考勤机的数据同步,从而实现办公效率的提升和考勤管理的自动化。

weixin_28999139的博客 765

Java中异常处理进阶篇(一)

关于Java异常一些基本的知识我这里就不在说了,大家可以去网上学习下。今天我主要讲解一下Java中异常处理的一些原则,我会尽量以代码的例子带大家去直观的感受异常的处理。 首先我们第一个疑惑的问题是异常到底是直接处理,还是向上抛出,供调用方处理或者框架统一集中处理,最后就是我们讲解如何写出一个我们自己的异常处理框架。 关于异常处理我总结了以下观点: 1.对于一些自定义的异常或者可预见的一些

cfang2005的专栏 341

如何在n8n中高效调用playwright-mcp实现浏览器自动化(附避坑指南)

本文详细介绍了在n8n中高效集成playwright-mcp实现浏览器自动化的全流程指南,包括环境准备、工作流设计与优化、高级技巧与性能调优以及调试与问题排查。通过克服实际部署中的各种挑战,帮助用户打造稳定高效的自动化解决方案,特别适合需要浏览器自动化的工作流场景。

weixin_30379531的博客 387

DexProtector内存校验绕过与DEX提取实战

DEX文件是Android应用的核心执行单元,其动态加载与运行时保护机制直接关系到App安全强度。DexProtector作为主流商业加固方案,摒弃传统文件级防护,转而依托ART虚拟机下的匿名内存映射段(anonymous mmap)构建多维校验体系——涵盖字节码完整性校验、内存页属性检测及运行时环境感知。其技术价值在于将防护锚点从静态APK迁移至动态内存态,大幅提升逆向门槛。典型应用场景包括金融类App的防篡改加固、游戏客户端的反外挂保护,以及政企应用的合规性安全增强。本文聚焦DexProtector v

weixin_30315435的博客 714

对输入数据进行多个异常处理

package as; import java.util.Scanner;public class d4 { static void inputException() throws IllegalAccessException {//定义inputException int a[]=new int[4];//实例化,定义包含4个整数型元素的数组 Scann

danluyao的博客 320

OpenCV实战:如何用Debevec算法搞定相机响应函数(附完整代码)

本文详细介绍了如何使用OpenCV实现Debevec算法计算相机响应函数(CRF),并应用于HDR图像合成。通过完整的代码示例和工程实践问题解决方案,帮助开发者掌握从原理到实现的关键步骤,提升高动态范围成像和计算机视觉任务的处理能力。

weixin_29061041的博客 230

IDEA中maven项目读取properties配置文件异常解决方法

复现 在javase复习第四弹的反射案例中,运行框架测试类后会有空指针异常。 //1.加载配置文件 //1.1创建properties对象 Properties properties = new Properties(); //1.2加载配置文件,转换为集合 //1.2.1获取配置文件 InputStream rs = ReflectTest.class.getClassLoader().getResourceAsStream(

谢康立的博客 3092

手眼标定搞定了,手眼矩阵不知道怎么用?快戳!!

手眼标定得到手眼矩阵到底该咋用? 大家好,我是小鱼。上几期给大家分享了关于手眼标定的方法,如果还有不清楚如何让进行手眼标定的同学可以参考下面的文章: 机器人手眼标定都能搞不定?快戳,最好用的手眼标定库!!! 很多同学做完了手眼标定之后得到了手眼矩阵,但是不知道怎么用于程序当中去,还有很多同学搞不清楚各个坐标系之间的关系,今天小智就给大家讲讲手眼矩阵的使用问题。 一、手眼矩阵为什么会长的不一样? 做完手眼标定,得到的手眼矩阵,有可能会长的不一样,这是因为旋转变换是有很多种表示方法的。 1.旋转的表

生活不止眼前的苟且 5343

信创改造实战:SpringBoot项目迁移到宝兰德BES 9.5.5的完整避坑指南(附依赖配置)

本文详细介绍了将SpringBoot项目迁移到宝兰德BES 9.5.5中间件的完整流程,包括环境准备、依赖调整、Web.xml版本适配、部署配置优化及常见问题解决方案。特别针对信创改造需求,提供了排除Tomcat依赖、处理BES专用starter等实用技巧,帮助开发者顺利完成国产中间件迁移。

weixin_30825581的博客 1100

数据异常解决方法汇总

文章目录Step1:积极与需求方沟通Step2:将问题进行树枝细化,直至最小单元Step 3. 基于最小单元,梳理相关因素,进行猜想验证Step 4. 测算每个因素对结果的“贡献度”碰到实在分析不出原因的数据异常怎么办? 本文转载自公众号:数据分析师成长记录 Step1:积极与需求方沟通 数据异常很大一部分原因是自身对问题的理解与需求方意图不一致导致的,所以需要积极与需求方沟通,从以下方面依次进行排查问题: 数据口径不一致等理解差异; 数据源更新延迟等数仓侧原因; 数据未上报/未采集等开发侧原因; St

pptde的博客 1万+

编译CycloneDDS和CycloneDDS-CXX踩过的坑——CMake Error at CMakeLists.txt:227 (find_package):

最近编译CycloneDDS和CycloneDDS-CXX踩了两个坑,花了不少时间。做个简单的记录,免得以后又踩到。注意:CycloneDDS-CXX编译依赖CycloneDDS,因此必须先编译CycloneDDS需要严格按照步骤进行,否则要入坑步骤如下,1先编译CycloneDDS以上步骤完成CycloneDDS的编译和安装,生成的bin include lib等位于install目录下面。

usstmiracle的博客 1900

python运维软件下载_老男孩Python运维教程2013年末版_python高级运维编程实战课程...

绝对精品-老男孩Python运维教程2013年末版,正好脚本之家也发现了几个更好的资料库,大家可以参考下。txt里面有更更多的老男孩全套python教程1、编程语言介绍2、Python基础,介绍历史、发展情况及现状3、Python安装、环境准备4、编程风格、语法要求、变量格式等5、编写用户交互脚本6、读取用户输入7、基本流程控制,if..else/for x in…/while True8、程序流...

weixin_39621774的博客 226

一文让你轻松理解802.11ax RU的概念

RU

1042484520@qq.com(邮箱) 3368

【WRF-FDDA】观测 Obs nudging 的配置与使用说明(中)

WRF-FDDA

WW、forever的博客 281

从旧系统到S/4HANA:资产期初数据迁移与年末接管的完整流程梳理

本文详细解析了从传统ERP系统迁移至SAP S/4HANA时资产期初数据迁移与年末接管的完整流程。重点介绍了年末接管场景下的FAGLGVTR操作,帮助企业在系统升级过程中确保资产数据的准确性和财务连续性,规避常见迁移陷阱。

weixin_30352191的博客 379

廖雪峰Python教程[完整版]

廖雪峰的python教程整理的,已经排好版了,而且还是完整的,适合小白

Python文件操作和异常处理:高效处理数据的利器

Python是一种强大而灵活的编程语言,它提供了许多功能强大的工具和库,用于处理各种数据类型。在数据处理中,文件操作和异常处理是非常重要的方面。本文将介绍Python中的文件操作和异常处理,探讨如何使用它们来高效地处理数据。我们将深入了解Python中的文件操作。文件是存储和读取数据的主要方式之一,在数据处理过程中起着至关重要的作用。我们将学习如何打开、读取、写入和关闭文件,以及如何处理常见的文件操作任务,如逐行读取和按行写入,将介绍如何处理不同类型的文件,如文本文件、CSV文件和JSON文件等。

忆~遂愿的博客 3191

IEM模型,地表粗糙度模拟

利用微波反演土壤水分时候,利用IEM模型可以实现对随机地表的模拟

假人有限元模型

假人模型,车辆碰撞假人有限元模型,适合做乘员安全的研究者利用

SpringBoot异常处理

把异常页面统一放在templates的error文件夹下404、500实际项目处理中会出现各种各样的异常,如果以上面的方式处理异常,我们就需要写大量的异常处理页面,太过麻烦,可以定义中一个全部异常处理页面使用了全局异常处理后原本的/error页面就会失效共有三种方法:这里举例两种一、注解自定义一个全局异常处理类,只需上面加上 @ControllerAdvice 注解同时要在执行异常处理的方法上标记@ExceptionHandler。

仰望-星空~~的博客 5219

大中型超市收银系统(可直接运行)

光步前台收银系统系统功能:商品销售、商品退货、挂单、收银员权限、会员销售、单品取消、整单取消、商品查询、脱机销售、脱机数据上传,基本资料下载,开钱箱、小票打印、收款结算,支持多币种付款方式(现金、储值卡、礼券、微信等),支持多种促销。运行环境:.net 4.0登陆信息用户名:1001 密码:123456内置商品信息,商品编码可输入00001000 - 00010000,测试效果相关功能键F5 结算 F9挂单 F11商品查询 F8退货 Insert单品取消 Del整单取消 F12开钱箱F2 会员 Ctrl+Z退出系统 Home 锁屏 相关源码待公开

异常处理的科学:如何用数据驱动优化异常处理

1.背景介绍 异常处理是计算机程序中不可或缺的一部分,它旨在在程序运行过程中发生的错误或异常情况得到及时的处理,以保证程序的稳定运行和安全性。然而,传统的异常处理方法往往是基于预设条件和规则的,这种方法在面对复杂的实际场景时可能会存在局限性。因此,在大数据时代,如何用数据驱动的方式优化异常处理,成为了一项重要的研究问题。 在本文中,我们将从以下几个方面进行探讨: 异常处理的核心概念与联系 ...

AI天才研究院 987

Python程序异常处理

异常就是程序运行时发生错误的信号,在程序由于某些原因出现错误的时候,若程序没有处理它,则会抛出异常,程序也的运行也会随之终止;1.程序终止,无法运行下去;2…如果程序是面向客户,那么会使客户的体验感很差,进而影响业务;当处理不确定因素时,比如有用户参与,有外界数据传入时,都容易出现异常;1.由于语法错误导致程序出现异常,这种错误,根本过不了Python解释器的语法检查,必须在程序执行前就改正;

Python编程学习的博客 6458

异常处理 (x64)

异常处理 (x64) Visual Studio 2013 其他版本 此主题尚未评级 - 评价此主题 本节论述 x64 上的结构化异常处理和 C++ 异常处理行为。 为异常处理和调试器支持展开数据 展开过程 语言特定处理程序 MASM 的展开帮助器 C 中的展开

多媒体编程、网络编程、系统编程、网络安全编程、驱动编程 1288

数据异常处理

4、字典:无序的映射类型,由若干"键( key ):值( value )"组成,"键"和"值"之间用冒号隔开,所有"键值对"放在一对大括号"{}"内,并用逗号分隔。(3)注意:当局部变量和全局变量同名时,在函数内部使用变量时,通常都是指局部变量,如果确实需要对全局变量进行修改,需要使用 global 关键字对变量进行声明,此时操作的就是全局变量了。(3) lambda 表达式的主体是一个表达式,而不是一个代码块,在表达式中可以调用其它函数,并支持默认值参数和关键字参数,表达式的结果相当于函数的返回值。

L01077218的博客 1472

DBeaver数据导入进度监控与异常处理

DBeaver作为一款功能强大的开源数据库管理工具,在数据导入过程中提供了完善的进度监控和异常处理机制。本文将深入探讨DBeaver数据导入的核心架构、进度监控实现原理、异常处理策略以及最佳实践。 ## 数据导入架构设计 ### 核心组件架构 ```mermaid classDiagram class DataTransferJob { +run(DBRProgres...

gitblog_00466的博客 964

SharePoint 2013 实现多级审批工作流

上一篇介绍了安装和配置SharePoint 2013 Workflow,这一篇将用SharePoint 2013 Designer Workflow来实现一个多级审批工作流。 审批工作流介绍 这个Demo是基于多级审批工作流。以古代上传奏折为场景,共分为3个阶段。当创建者上传奏折...

chichengbu3180的博客 242

数据异常处理:从源头到终端的优化策略

1.背景介绍 数据异常处理是现代数据科学和人工智能领域中的一个关键问题。随着数据规模的不断增加,数据异常的影响也越来越大。因此,有效地处理数据异常变得越来越重要。本文将从源头到终端探讨数据异常处理的优化策略,包括数据清洗、异常检测、异常处理和模型优化等方面。 1.1 数据异常的定义和类型 数据异常是指数据中不符合预期的值或格式。这些异常可能是由于数据收集、存储、传输或处理过程中的错误导致的。...

AI天才研究院 2093
上一篇: Oracle数据泵的使用
下一篇: Eclipse中查看没有源码的Class文件的方法——jadclipse插件使用
super2007
博客等级 码龄18年 13粉丝 41原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值