System.ArgumentOutOfRangeException: 索引和长度必须引用该字符串内的位置。 参数名: length 在 System.String.Substring(Int32 startIndex, Int32 length) 在 zhuanliShow.Bind()
【技术实现步骤摘要】
本专利技术涉及数据库的数据迁移,具体地说是一种基于分布式数据库实现数据导入时容错方法及系统。
技术介绍
1、在分布式数据库中,数据导入时是否支持容错功能是衡量一个数据库迁移时的高效性和易用性的重要标准。现有技术中的数据导入存在如下缺点:
2、1)在导入数据时不支持对数据文件的容错功能:
3、没有处理导入时数据文件可能出现的错误情况,如果导入时数据文件存在出错,那么整个导入将失败。如果用户整个文件只有一行数据存在问题,那么整个导入作业将全部失败,并且需要对已经入库的数据进行回滚;这无疑耗费了大量的人力,机器以及时间资源,因为一行数据导致上亿行数据导入失败,显然也是用户不希望见到的。
4、2)在导入时不对数据进行检查:
5、在数据导入时,没有对数据文件提前做检查,虽然数据能全部导入,但是在使用时可能会出现部分数据或全部数据不可用。虽然不会消耗大量的资源用于数据回滚等,但是为数据库支持的业务埋下了一个隐患,可能会导致线上的业务不可用。
6、数据导入通常会涉及海量数据的写入,整个导入过程持续很长时间,如果因为用户数据的少量损坏就导致整个导入失败并回滚,人力成本和时间成本是巨大的,用户更多的希望正确数据能够被正确导入,并且可以查看有多少行数据出现错误,以及出现的错误数据具体是哪些,以便于用户修正数据文件后进行下一次导入。
7、故在数据库的数据导入时,如何实现支持设置容错行数,达到节约用户的资源消耗,提高用户迁移效率的目的是目前亟待解决的技术问题。
1、本专利技术的技术任务是提供一种基于分布式数据库实现数据导入时容错方法及系统,来解决在数据库的数据导入时,如何实现支持设置容错行数,达到节约用户的资源消耗,提高用户迁移效率的目的的问题。
2、本专利技术的技术任务是按以下方式实现的,一种基于分布式数据库实现数据导入时容错方法,该方法具体如下:
3、用户在分布式数据库执行数据导入命令时,设置本次导入允许数据文件中出现错误的数据行数,即设定容错行数;
4、数据库开启若干个用于读取数据文件的线程以及一个用于处理错误数据的线程,并开启一个信道用于传递错误数据;
5、读取数据文件,在进行数据转换时,判断数据文件中的数据是否满足要求:
6、若不满足,则将错误数据传入信道中,继续读取下一行数据;
7、用于处理错误数据的线程收到读取数据文件线程发来的错误数据时,判断当前计数器计数是否超出用户设定的容错行数,再记录错误数据到固定文件中。
8、作为优选,用户在分布式数据库执行数据导入命令时,设置本次导入允许数据文件中出现错误的数据行数具体如下:
9、数据库解析导入命令,并判断用户是否传入容错行数:
10、若有,则说明开启容错功能;
11、数据库检测用户输入容错行数的合法性:只允许输入大于零的自然数,否则报错,并提示用户输入的容错行数不合法。
12、作为优选,数据库开启若干个用于读取数据文件的线程以及一个用于处理错误数据的线程,并开启一个信道用于传递错误数据具体如下:
13、数据库开启若干个相互独立的线程,开始读取用户输入的数据文件;
14、数据库开启一个线程,用于记录数据文件中的错误数据;
15、开启一个多对一的信道,每个读取数据文件的线程,在遇到错误数据时,均向信道中发送一条消息,该消息包含当前的错误数据。
16、作为优选,读取数据文件,在进行数据转换时,判断数据文件中的数据是否满足要求具体如下:
17、按行读取文件数据,根据数据库中表的元数据,比较该数据库中表的列数与用户数据中的字段数是否相等:
18、若不相等,则认为该行数据是错误数据,将错误数据发送到信道中,继续处理下一行数据;
19、若数据通过字段数校验,则根据数据库中表的元数据按照列类型依次转换读取的一行数据中的每一个字段;
20、若任一个字段解析或转换失败,则认为该行数据是错误数据,将该行错误数据发送至信道中,继续处理下一行数据。
21、更优地,用于处理错误数据的线程收到读取数据文件线程发来的错误数据时,判断当前计数器计数是否超出用户设定的容错行数,再记录错误数据到固定文件中具体如下:
22、用于处理错误数据的线程接收到读取文件线程发来的错误数据,首先更新自己的计数器;
23、比较计数器中的值和用户传入的值大小:
24、若计数器中的值小于用户传入的值,则表明容错进程继续接受错误数据,将当前消息中的错误数据,写入固定文件中,继续处理下一行错误数据;
25、若计数器中的值大于用户传入的值,则表明当前容错行数已经超过用户预设的最大行数,应立即报错,并通过上下文通知所有线程退出,回滚数据,结束导入任务,并提示用户,当前容错行数已经超出预设的容错上限。
26、一种基于分布式数据库实现数据导入时容错系统,该系统包括:
27、设置模块,用于在分布式数据库执行数据导入命令时,设置本次导入允许数据文件中出现错误的数据行数,即设定容错行数;
28、开启模块,用于在数据库中开启若干个用于读取数据文件的线程以及一个用于处理错误数据的线程,并开启一个信道用于传递错误数据;
29、读取模块,用于读取数据文件,在进行数据转换时,判断数据文件中的数据是否满足要求:
30、若不满足,则将错误数据传入信道中,继续读取下一行数据;
31、判断模块,用于在处理错误数据的线程收到读取数据文件线程发来的错误数据时,判断当前计数器计数是否超出用户设定的容错行数,再记录错误数据到固定文件中。
32、作为优选,所述设置模块的工作过程具体如下:
33、(1)数据库解析导入命令,并判断用户是否传入容错行数:
34、若有,则说明开启容错功能;
35、(2)数据库检测用户输入容错行数的合法性:只允许输入大于零的自然数,否则报错,并提示用户输入的容错行数不合法;
36、所述开启模块的工作过程具体如下:
37、(1)数据库开启若干个相互独立的线程,开始读取用户输入的数据文件;
38、(2)数据库开启一个线程,用于记录数据文件中的错误数据;
39、(3)开启一个多对一的信道,每个读取数据文件的线程,在遇到错误数据时,均向信道中发送一条消息,该消息包含当前的错误数据。
40、作为优选,所述读取模块按行读取文件数据,根据数据库中表的元数据,比较该数据库中表的列数与用户数据中的字段数是否相等:
41、若不相等,则认为该行数据是错误数据,将错误数据发送到信道中,继续处理下一行数据;
42、若数据通过字段数校验,则根据数据库中表的元数据按照列类型依次转换读取的一行数据中的每一个字段;
4本文档来自技高网...
【技术保护点】
1.一种基于分布式数据库实现数据导入时容错方法,其特征在于,该方法具体如下:
2.根据权利要求1所述的基于分布式数据库实现数据导入时容错方法,其特征在于,用户在分布式数据库执行数据导入命令时,设置本次导入允许数据文件中出现错误的数据行数具体如下:
3.根据权利要求1所述的基于分布式数据库实现数据导入时容错方法,其特征在于,数据库开启若干个用于读取数据文件的线程以及一个用于处理错误数据的线程,并开启一个信道用于传递错误数据具体如下:
4.根据权利要求1所述的基于分布式数据库实现数据导入时容错方法,其特征在于,读取数据文件,在进行数据转换时,判断数据文件中的数据是否满足要求具体如下:
5.根据权利要求1-4中任一项所述的基于分布式数据库实现数据导入时容错方法,其特征在于,用于处理错误数据的线程收到读取数据文件线程发来的错误数据时,判断当前计数器计数是否超出用户设定的容错行数,再记录错误数据到固定文件中具体如下:
6.一种基于分布式数据库实现数据导入时容错系统,其特征在于,该系统包括:
7.根据权利要求6所述的基于
8.根据权利要求6或7所述的基于分布式数据库实现数据导入时容错系统,其特征在于,所述读取模块按行读取文件数据,根据数据库中表的元数据,比较该数据库中表的列数与用户数据中的字段数是否相等:
9.一种电子设备,其特征在于,包括:存储器和至少一个处理器;
10.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质中存储有计算机程序,所述计算机程序可被处理器执行以实现如权利要求1至5中任一项所述的基于分布式数据库实现数据导入时容错方法。
...【技术特征摘要】
1.一种基于分布式数据库实现数据导入时容错方法,其特征在于,该方法具体如下:
2.根据权利要求1所述的基于分布式数据库实现数据导入时容错方法,其特征在于,用户在分布式数据库执行数据导入命令时,设置本次导入允许数据文件中出现错误的数据行数具体如下:
3.根据权利要求1所述的基于分布式数据库实现数据导入时容错方法,其特征在于,数据库开启若干个用于读取数据文件的线程以及一个用于处理错误数据的线程,并开启一个信道用于传递错误数据具体如下:
4.根据权利要求1所述的基于分布式数据库实现数据导入时容错方法,其特征在于,读取数据文件,在进行数据转换时,判断数据文件中的数据是否满足要求具体如下:
5.根据权利要求1-4中任一项所述的基于分布式数据库实现数据导入时容错方法,其特征在于,用于处理错误数据的线程收到读取数据文件线程发来的错误...
【专利技术属性】
技术研发人员:鲍之骁,
申请(专利权)人:山东浪潮数据库技术有限公司,
类型:发明
国别省市:
还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。