CN102915377B - 数据库转换或同步方法及系统 - Google Patents

数据库转换或同步方法及系统 Download PDF

Info

Publication number
CN102915377B
CN102915377B CN201210456722.9A CN201210456722A CN102915377B CN 102915377 B CN102915377 B CN 102915377B CN 201210456722 A CN201210456722 A CN 201210456722A CN 102915377 B CN102915377 B CN 102915377B
Authority
CN
China
Prior art keywords
data
database
source
read
conversion
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Active
Application number
CN201210456722.9A
Other languages
English (en)
Other versions
CN102915377A (zh
Inventor
钟静
袁源
张敬超
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Shenzhen Hongdian Technologies Corp
Original Assignee
Shenzhen Hongdian Technologies Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Shenzhen Hongdian Technologies Corp filed Critical Shenzhen Hongdian Technologies Corp
Priority to CN201210456722.9A priority Critical patent/CN102915377B/zh
Publication of CN102915377A publication Critical patent/CN102915377A/zh
Application granted granted Critical
Publication of CN102915377B publication Critical patent/CN102915377B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Abstract

一种数据库转换或同步方法及系统包括:从配置文件中读取与目标数据库对应设置的数据转换和同步策略;轮询配置文件中的目标数据库连接信息,开启目标数据库;读取同步策略,根据同步策略组织读取源数据库的SQL语句,根据SQL语句从源数据库中读取源数据;将从源数据库中读取的数据插入到目标数据库进行同步;上述数据库转换或同步方法及系统采用主动将源数据库的数据读取后或转换之后插入到目标数据库中,可以应用于当多源异构的情况、源数据库结构与目标数据库结构不一致的情况;并且可在源数据处于弱势地位,而目标数据库处于强势地位的情况下使用,适应不同的转换模式,基于此上述的数据库同步方法或系统不破坏源数据库和目标数据库的结构。

Description

数据库转换或同步方法及系统
技术领域
本发明涉及计算机领域,特别是涉及一种数据库转换或同步的方法及系统。
背景技术
现有的计算机系统主要通过数据库实现对数据的存储和维护,各应用系统通过访问数据库获取数据或进行相关数据维护。现在各种各样的数据库都涌入市场,免费的、收费的,大型的、小型的,如:MySQL、SQLServer、Oracle、PgSQL等等。
为了保证应用系统之间数据的一致,往往需要进行数据库同步。目前在数据库同步领域,同类数据库之间的数据库同步有比较完善的方法,如SQLServer的数据复制、发布。异构数据库之间的同步方法也有较多的方式,如异构数据库数据的统一中间数据库、异构数据库基于SQL的数据同步等方法,但都不太完善,存在一些问题。如中间数据库模式需要建立一个中间数据库,操作繁琐,浪费空间。现有的SQL(structuredquerylanguage,结构化查询语言)语句模式:首先需要将目标数据库进行初始化,以使得目标数据库和源数据库的数据一致。日志文件模式要求数据库表结构必须一致。
发明内容
基于此,有必要提供一种不破坏源数据库、目标数据库结构的数据库转换或同步方法。
同时,提供一种不破坏源数据库、目标数据库结构的数据库转换或同步系统。
一种数据库转换或同步方法,包括如下步骤:
读取数据转换和同步策略步骤:从配置文件中读取与目标数据库对应设置的数据转换和同步策略;
开启目标数据库步骤:轮询配置文件中的目标数据库连接信息,开启目标数据库;
读取源数据库步骤:读取同步策略,根据同步策略组织读取源数据库的SQL语句,根据SQL语句从源数据库中读取源数据;
同步步骤:将从源数据库中读取的数据插入到目标数据库进行同步。
在优选的实施例中,进一步包括:创建配置文件步骤:创建配置文件,记录数据库同步信息;所述数据库同步信息包括:目标数据库连接信息、读取源数据库的SQL语句、与目标数据库对应设置的数据转换和同步策略。
在优选的实施例中,所述读取源数据库步骤还包括:将根据SQL语句从源数据库中读取结果保存为数据结果集,所述数据结果集包括:每个字段的值、及相应的每个字段值的索引。
在优选的实施例中,所述数据转换和同步策略包括:数据同步一般策略及数据同步特殊策略;所述读取源数据库步骤中,优先采用数据同步一般策略组织所述读取源数据库的SQL语句对源数据库的源数据进行读取,若不能直接从数据结果集中获取目标数据库所需的数据,则采用数据同步特殊策略组织所述读取源数据库的SQL语句以对源数据库的源数据进行读取;所述数据同步一般策略包括:目标数据库表结构信息,所述目标数据库表结构信息包括:目标数据库表名、表字段、字段类型、每个字段对应于数据结果集中的字段索引与字段类型中的任意一种或多种;所述数据转换和同步策略还包括数据同步特殊策略;若不能直接从数据结果集中获取目标数据库所需的数据,则采用数据同步特殊策略;所述数据同步特殊策略包括:读取源数据库数据的SQL语句、参数条件。
在优选的实施例中,所述读取源数据库步骤还包括:判断源数据库数据是否有变化,若判断有变化则进行数据过滤以过滤已同步过的数据不进行读取;所述读取数据转换和同步策略步骤还包括:读取配置文件的与目标数据库对应设置的数据转换和同步策略后将其放入内存中,所述读取源数据库步骤还包括将数据转换和同步策略从内存中取出进行读取。
在优选的实施例中,所述数据库同步信息还包括数据转换策略;所述读取源数据库步骤还包括:判断读取的源数据库的数据是否需要转换,若判断需要转换则通过数据转换策略将从源数据库读取的数据进行转换后根据数据转换和同步策略组织读取源数据库的SQL语句。
在优选的实施例中,判断读取的源数据库的数据是否需要转换的判断方式为:若无法通过数据转换和同步策略从源数据库读取的数据中获取目标数据库所需的数据、或若从源数据库读取的字段值与目标数据库需要的字段值不匹配时,则判断为需要转换,则通过数据转换策略将读取的源数据库的源数据计算转换成符合要求的数据;所述数据转换策略包括:读取源数据库的SQL语句、数据计算转换公式。
在优选的实施例中,所述同步步骤还包括:根据预同步的源数据库的数据建立索引文件或更新索引文件,同步成功后,将已同步的数据索引从索引文件中删除;所述读取源数据数据步骤进一步包括:根据索引文件中的数据索引读取源数据库的源数据。
一种数据库转换或同步系统,包括:
配置文件模块:创建记录数据库同步信息配置文件;所述数据库同步信息包括:目标数据库连接信息、读取源数据库的SQL语句、与目标数据库对应设置的数据转换和同步策略;
读取数据转换和同步策略模块:从配置文件中读取与目标数据库对应设置的数据转换和同步策略;
开启目标数据库模块:轮询配置文件中的目标数据库连接信息,开启目标数据库;
读取源数据库模块:读取同步策略,根据同步策略组织读取源数据库的SQL语句,根据SQL语句从源数据库中读取源数据;
同步模块:将从源数据库中读取的数据插入到目标数据库进行同步,根据预同步的源数据库的数据建立索引文件或更新索引文件,同步成功后,将已同步的数据索引从索引文件中删除。
在优选的实施例中,所述读取源数据库模块还包括:
判断源数据库变化单元:判断源数据库数据是否有变化,若判断有变化则进行数据过滤,以过滤已同步过的数据不进行读取;
判断数据转换单元:判断读取的源数据库的数据是否需要转换,若需要转换则通过数据转换策略将从源数据库读取的源数据进行转换后,根据数据转换和同步策略组织读取源数据库的SQL语句。
上述数据库转换或同步方法及系统采用主动将源数据库的数据读取后或转换之后插入到目标数据库中,可以应用于当多源异构的情况、源数据库结构与目标数据库结构不一致的情况;并且可在源数据处于弱势地位,而目标数据库处于强势地位的情况下使用,还可以提高数据同步的效率,适应不同的转换模式。
且在源数据库和目标数据库不仅数据库类型不同,并且两库的表结构、字段不一样也可以进行同步,目标数据库和源数据库表结构不需要做任何的修改和操作。从源数据库中获取数据进行转换之后主动插入到目标数据库中,基于此上述的数据库同步方法或系统不破坏源数据库和目标数据库的结构。
附图说明
图1为本发明一实施例的数据库转换或同步方法的流程图;
图2为本发明另一实施例的数据库转换或同步方法的流程图;
图3为本发明又一实施例的数据库转换或同步方法的流程图;
图4为本发明一实施例的数据库转换或同步系统的功能模块示意图;
图5为本发明另一实施例的数据库转换或同步系统的功能模块示意图。
具体实施方式
如图1所示,本发明一实施例的数据库转换或同步方法,包括如下步骤:
步骤S103,读取数据转换和同步策略步骤:读取配置文件中与相应的目标数据对应设置的数据转换和同步策略;
步骤S105,开启目标数据库步骤:轮询配置文件中的目标数据库连接信息,开启目标数据库;
步骤S107,读取源数据库步骤:读取数据转换和同步策略,根据数据转换和同步策略组织以读取源数据库的SQL语句,根据该读取源数据库的SQL语句从源数据库中读取源数据;
步骤S109,同步步骤:将从源数据库中读取的源数据插入到目标数据库进行同步。
本实施例中,将源数据库的数据采用源数据进行说明。
如图2所示,进一步,本实施例的数据库转换或同步方法还包括:步骤S101,创建配置文件步骤:创建能提供数据库同步信息的配置文件。配置文件的格式可以为*.xml、*.txt等文本文件。本实施例的配置文件优选的采用遵循XML格式的配置文件。进一步,本实施例的配置文件根据需求进行手动创建。
配置文件记录的数据库同步信息包括:目标数据库连接信息、目标数据库数据转换和同步策略、读取源数据库的SQL(structuredquerylanguage,结构化查询语言)语句。
本实施例的数据库转换或同步方法进一步包括:将创建好的XML配置文件上传到指定的目录上。对配置文件进行上传时可以上传多个配置文件,其中每个配置文件对应相应的目标数据库及相应目标数据库的数据转换和同步策略。
进一步,目标数据库连接信息包括:数据库地址、连接端口、用户名/密码、数据库名、数据库类型等的任意一种或多种,可以根据需要进行选择。
进一步,读取源数据库的SQL语句。本实施例的数据库转换或同步方法的读取源数据库步骤还包括:通过SQL语句将对源数据库的读取结果保存为一个集合。该集合为数据结果集。本实施例的数据结果集包括:每个字段的值,以及为每个字段值建立的索引。
进一步,本实施例的数据转换和同步策略包括:数据同步一般策略及数据同步特殊策略。所述读取源数据库步骤中,优先采用数据同步一般策略组织读取源数据库的SQL语句对源数据库的源数据进行读取,若不能直接从数据结果集中获取目标数据库所需的数据,则采用数据同步特殊策略组织读取源数据库的SQL语句以对源数据库的源数据进行读取。
当然若不存在需要数据同步特殊策略处理的情况,本实施例的数据转换和同步策略可以只需设置数据同步一般策略。当然本实施例的数据转换和同步策略也可设置为其他能实现同步的数据转换和同步策略,在此不再赘述。
本实施例的数据同步一般策略主要包括:目标数据库表结构信息。目标数据库表结构信息包括:目标数据库表名、表字段、字段类型、每个字段对应于数据结果集中的字段索引与字段类型等的任意一种或多种。本实施例的目标数据库表结构信息的项目选择可根据需要进行选择。优选的,本实施例的数据同步一般策略采用一个字段对应数据结果集的一个字段类型和索引;其他信息可以根据需要进行采用。
本实施例,优选的,数据同步特殊策略包括:读取源数据库数据的SQL语句、参数条件。
为了更加清楚的介绍本发明的数据同步一般策略,下面截取了本发明一实施例的数据同步一般策略部分内容进行具体说明:
<otherTable>ST_PPTN_R</otherTable>
<primaryValue>0</primaryValue>
<primaryId>ID</primaryId>
<tableName>rainfall_record</tableName>
<column>
<localColumn>2</localColumn>
<localType>Integer</localType>
<otherColumn>STCD</otherColumn>
<otherType>String</otherType>
<format></format>
<ref></ref>
<constant></constant>
<priStatus>true</priStatus>
</column>
其中,
<otherTable>为目标数据库中的表名
<primaryValue>主键值
<primaryID>主键ID
<tableName>为源数据表名
<localColumn>为“数据结果集”中索引为2的字段
<localType>为“数据结果集”中索引为2的字段类型
<otherColumn>目标数据库字段
<otherType>目标数据库字段类型
<format>字段类型转换
<ref>当写入此字段的值不在查询结果集中,需要在其他表中查询时,配置此值
<Constant>当目标数据库此字段是一个恒值的时候配置<Constant>为需要写入此字段的值
<priStaus>是否是主键
上述程序内容仅为清楚、明白说明本实施例的数据同步一般策略,并不作为限制本发明的数据同步一般策略的说明。
为了进一步直观、清楚的说明本实施例的数据同步特殊策略,下面紧跟上述一实施例的数据同步一般策略的程序进行具体说明:
如果标签<localColumn>中为空时,此时需要采用数据同步特殊策略。数据同步特殊策略主要包括读取源数据库的SQL语句、参数条件。将下文中标签<param>中的内容与<sql>中的语句组成数据同步特殊策略来获取所需要的同步数据。
<strategy>
<name>dayrain</name>
<sql>SELECTSUM_DAYFROMDAY_RAINFALLWHERERTU_ID=?ANDSTART_TIME=?</sql>
<type>BigDecimal</type>
<param>1:none,4:startTime</param>
<notNull>false</notNull>
</strategy>
上述程序内容仅为清楚、明白、直观说明本实施例的数据同步特殊策略,并不作为限制本发明的数据同步特殊策略的说明。
进一步,步骤S103,读取数据转换和同步策略步骤中,读取配置文件的数据转换和同步策略后,将其放入内存中。
进一步,步骤S105,开启目标数据库步骤前还包括:启动数据转换守护线程。
进一步,步骤S105,开启目标数据库步骤中,通过定时器来轮询内存中的目标数据库连接信息,以用来查找启用的目标数据库。
进一步,步骤S107,读取源数据库步骤中,将数据转换和同步策略从内存中取出进行读取。
进一步,步骤S107,读取源数据库步骤还包括:判断源数据库的源数据是否有变化,若判断有变化则进行数据过滤以过滤已同步过的数据不进行读取。若判断源数据库的数据未有变化或更新则结束。
进一步,步骤S107,读取源数据库步骤中,根据SQL语句从源数据库中读取数据时,将数据进行过滤以不再读取已同步过的数据。数据过滤的方法优选的为,采用根据索引文件中的数据索引进行读取。该索引文件根据同步进行更新,更新后的索引文件只包括源数据库中发生变更或新增的数据记录。
进一步,步骤S107,读取源数据库步骤还包括:判断数据需要转换的步骤,若判断读取的源数据库中的数据需要转换,则通过数据转换策略将从源数据库读取的源数据进行转换后,根据数据转换和同步策略组织读取源数据库的SQL语句。若读取的源数据库中的数据不需要转换,则根据数据转换和同步策略组织读取源数据库的SQL语句。
进一步,本实施例中,判断数据需要转换的步骤中的判断方式为:通过是否能通过数据转换和同步策略获取目标数据库所需的数据进行判断,若无法通过数据转换和同步策略获取目标数据库所需的数据,则判断为读取的源数据库中的数据需要转换,则通过数据转换策略将读取的源数据库的数据计算转换成符合要求的数据。否,则读取的源数据库中的数据不需要转换。
进一步,由于本实施例的,优选的实施方式中,数据转换和同步策略包括:数据同步一般策略、数据同步特殊策略。进一步,本实施例的配置文件的数据库同步信息还包括:数据转换策略。当数据转换策略不能直接通过数据同步一般策略、数据同步特殊策略中获取目标数据库所需要的信息时,可通过数据转换策略中对应设置的数学公式或数据计算转换公式等进行计算。进一步,本实施例的数据转换策略包括:读取源数据库的SQL语句、数据计算转换公式。
进一步,具体地,判断数据需要转换的步骤中的判断方式为可通过判断源数据库读取的字段值与目标数据库需要的字段值是否匹配进行判断。若从源数据库读取的字段值与目标数据库需要的字段值不匹配时,则判断为读取的源数据库中的数据需要转换,则通过数据转换策略将读取的源数据库的源数据计算转换成符合要求的数据。否,则读取的源数据库中的数据不需要转换。
本实施例中,优选的,步骤S107,读取源数据库步骤中先执行SQL语句从源数据库中读取源数据,获取数据结果集,然后再判断源数据库数据是否有更新或变化,若判断否则结束,若判断是则执行数据过滤过程。数据过滤完成后再判断读取的源数据库中的数据是否需要转换,若判断否则执行根据数据转换和同步策略组织读取源数据库的SQL语句;若判断是,则根据数据转换策略将读取的源数据库中的数据进行转换,转换后据数据转换和同步策略组织读取源数据库的SQL语句,执行SQL语句,将转换后读取的源数据库中的数据同步到目标数据库。
进一步,步骤S109,同步步骤还包括:根据预同步的源数据库的数据即源数据建立索引文件或更新索引文件,同步成功后,将已同步的数据索引从索引文件中删除。
进一步,优选的,步骤S107,读取源数据库步骤中,根据上述的索引文件中的数据索引读取源数据库的源数据。
索引文件根据已同步过的源数据进行建立。优选的,本实施例的索引文件以二进制格式保存在与配置文件相同路径下进行管理。索引文件以表名和主键为关键字的键值对,值为同步标识。数据尚未同步前,索引文件对源数据库中的所有需要同步的数据创建数据索引,同步之后,则将索引文件中同步过后的数据索引删除。后期如果源数据库中有数据记录被更新或新增时,则将变更和新增的数据索引添加到索引文件中。
如图3所示,本发明另一实施例的数据库转换或同步方法,具体实现如下:
步骤S501:读取XML格式的配置文件,放入内存中;
步骤S503:启动数据转换守护线程;
步骤S505:轮询配置文件中的目标数据库连接信息,开启目标数据库;
步骤S507:从内存中读取配置文件中对应该开启的目标数据库的转换策略;
步骤S509:执行读取源数据库数据的SQL语句,从源数据库中读取源数据,获取数据结果集;
步骤S511:判断源数据库数据是否有更新,
若判断否则结束;若判断是则执行
步骤S513:数据过滤;
步骤S515:判断读取的源数据库数据是否需要转换,若判断否则执行步骤S519;若判断是则执行
步骤S517:根据数据转换策略将读取的源数据库的数据进行计算转换成目标数据库所需的数据;
步骤S519:根据数据同策略组织同步源数据库数据的SQL语句;
步骤S521:根据SQL语句,同步源数据库的数据到目标数据库,并建立或更新数据索引文件;
步骤S523:结束。
本实施例的数据库转换或同步方法不管源数据库和目标数据库的结构或数据如何变化,只需要修改配置文件中相应部分的内容即可实现两库的同步,例如:目标数据库中的表名或表字段发生变化,则在配置文件中只需要修改数据同步一般策略中目标数据库的表名和字段名即可实现源数据库与目标数据库之间的同步。
本实施例的数据库转换或同步方法可一次同步多个不同数据库表结构、不同数据库类型、不同数据转换和同步策略的目标数据库。
本实施例的数据库转换或同步方法主动将源数据库的数据读取后或转换之后插入到目标数据库中,可以应用于当多源异构的情况,源数据库结构与目标数据库结构不一致的情况;并且可在源数据处于弱势地位,而目标数据库处于强势地位的情况下使用,还可以提高数据同步的效率,适应不同的转换模式。
如图4所示,本发明一实施例的数据库转换或同步系统102,包括:
配置文件模块202:创建记录数据库同步信息配置文件;所述数据库同步信息包括:目标数据库连接信息、读取源数据库的SQL语句、与目标数据库对应设置的数据转换和同步策略;
读取数据转换和同步策略模块204:读取配置文件的与目标数据库对应设置的同步策略;
开启目标数据库模块206:轮询配置文件中的目标数据库连接信息,开启目标数据库;
读取源数据库模块208:读取同步策略,根据同步策略组织读取源数据库的SQL语句,根据SQL语句从源数据库中读取源数据;
同步模块210:将从源数据库中读取的数据插入到目标数据库进行同步,根据预同步的源数据库的数据建立索引文件或更新索引文件,同步成功后,将已同步的数据索引从索引文件中删除。
如图5所示,在优选的实施例中,所述读取源数据库模块208还包括:判断源数据库变化单元2080、判断数据转换单元2082。
判断源数据库变化单元2080:判断源数据库数据是否有变化,若判断有变化则进行数据过滤,以过滤已同步过的数据不进行读取。
判断数据转换单元2082:判断读取的源数据库的数据是否需要转换,若需要转换则通过数据转换策略将从源数据库读取的源数据进行转换后,根据数据转换和同步策略组织读取源数据库的SQL语句。
本实施例的数据库转换或同步系统进一步包括上传模块203:将配置文件模块202创建好的XML配置文件上传到指定的目录上。上传模块203对配置文件进行上传时可以上传多个配置文件,其中每个配置文件对应相应的目标数据库及相应目标数据库的数据转换和同步策略。
进一步,本实施例的目标数据库连接信息包括:数据库地址、连接端口、用户名/密码、数据库名、数据库类型等的任意一种或多种,可以根据需要进行选择。
进一步,本实施例的数据库转换或同步方法的读取源数据库模块208还包括:通过SQL语句将对源数据库的读取结果保存为一个集合。该集合为数据结果集。本实施例的数据结果集包括:每个字段的值,以及为每个字段值建立的索引。
进一步,本实施例的数据转换和同步策略包括:数据同步一般策略及数据同步特殊策略。
读取源数据库模块208中,优先采用数据同步一般策略组织读取源数据库的SQL语句,以对源数据库的源数据进行读取;若不能直接从数据结果集中获取目标数据库所需的数据,则采用数据同步特殊策略组织读取源数据库的SQL语句以对源数据库的源数据进行读取。
本实施例的数据同步一般策略主要包括:目标数据库表结构信息。目标数据库表结构信息包括:目标数据库表名、表字段、字段类型、每个字段对应于数据结果集中的字段索引与字段类型等的任意一种或多种。本实施例的目标数据库表结构信息的项目选择可根据需要进行选择。
本实施例,优选的,数据同步特殊策略包括:读取源数据库数据的SQL语句、参数条件。
进一步,读取数据转换和同步策略模块204还包括:读取配置文件的数据转换和同步策略后,将其放入内存中。
进一步,开启目标数据库模块206还包括:通过定时器来轮询内存中的目标数据库连接信息,以用来查找启用的目标数据库。
进一步,读取源数据库模块208还包括:读取数据转换和同步策略时,将数据转换和同步策略从内存中取出进行读取。
进一步,读取源数据库模块208还包括:根据SQL语句从源数据库中读取数据时,将数据进行过滤以不再读取已同步过的数据。数据过滤的方法优选的为,采用根据索引文件中的数据索引进行读取。该索引文件根据同步进行更新,更新后的索引文件只包括源数据库中发生变更或新增的数据记录。
进一步,本实施例中,判断数据转换单元2082的判断方式为:通过是否能通过数据转换和同步策略获取目标数据库所需的数据进行判断,若无法通过数据转换和同步策略获取目标数据库所需的数据,则判断为读取的源数据库中的数据需要转换,则通过数据转换策略将读取的源数据库的数据计算转换成符合要求的数据。否,则读取的源数据库中的数据不需要转换。
进一步,由于本实施例的,优选的实施方式中,数据转换和同步策略包括:数据同步一般策略、数据同步特殊策略。进一步,本实施例的配置文件的数据库同步信息还包括:数据转换策略。当数据转换策略不能直接通过数据同步一般策略、数据同步特殊策略中获取目标数据库所需要的信息时,可通过数据转换策略中对应设置的数学公式或数据计算转换公式等进行计算。进一步,本实施例的数据转换策略包括:读取源数据库的SQL语句、数据计算转换公式。
进一步,具体地,判断数据转换单元2082的判断方式为可通过判断源数据库读取的字段值与目标数据库需要的字段值是否匹配进行判断。若从源数据库读取的字段值与目标数据库需要的字段值不匹配时,则判断为读取的源数据库中的数据需要转换,则通过数据转换策略将读取的源数据库的源数据计算转换成符合要求的数据。否,则读取的源数据库中的数据不需要转换。
进一步,优选的,读取源数据库模块208根据索引文件中的数据索引读取源数据库的源数据。
索引文件根据已同步过的源数据进行建立。优选的,本实施例的索引文件以二进制格式保存在与配置文件相同路径下进行管理。索引文件以表名和主键为关键字的键值对,值为同步标识。数据尚未同步前,索引文件对源数据库中的所有需要同步的数据创建数据索引,同步之后,则将索引文件中同步过后的数据索引删除。后期如果源数据库中有数据记录被更新或新增时,则将变更和新增的数据索引添加到索引文件中。
本发明的数据库转换或同步方法或系统可以应用于源数据库与目标数据库库类型、库结构完全不同的情况下,进行数据库之间的同步。还可以同时同步多个目标数据库;目标数据库不需要做任何的操作,则可以将源数据库的数据同步过来,且不管源数据库和目标数据库体结构如何变化,只需要对配置文件进行修改则可以将数据进行同步。当源数据库中的字段值与目标数据库中需要的字段值不匹配的情况下,可通过数据转换策略将源数据进过转换之后插入到目标数据库中。读取配置文件的后,获取转换策略将其存储在内存中,以提高数据同步效率。对已经同步的数据建立索引文件或索引,再次同步的时候只同步未同步的数据。
以上所述实施例仅表达了本发明的几种实施方式,其描述较为具体和详细,但并不能因此而理解为对本发明专利范围的限制。应当指出的是,对于本领域的普通技术人员来说,在不脱离本发明构思的前提下,还可以做出若干变形和改进,这些都属于本发明的保护范围。因此,本发明专利的保护范围应以所附权利要求为准。

Claims (8)

1.一种数据库转换或同步方法,其特征在于,包括如下步骤:
读取数据转换和同步策略步骤:读取记录数据库同步信息的配置文件,读取配置文件中与目标数据库对应设置的数据转换和同步策略;
开启目标数据库步骤:轮询配置文件中的目标数据库连接信息,开启目标数据库;
读取源数据库步骤:读取数据转换和同步策略,根据数据转换和同步策略组织读取源数据库的SQL语句,根据SQL语句从源数据库中读取源数据,获取数据结果集,再判断读取的源数据库数据是否需要转换,若判断需要转换则根据数据转换策略将读取的源数据库的数据进行计算转换成目标数据库所需的数据,若判断不需要转换则直接进行同步步骤;
数据转换和同步策略包括:数据同步一般策略、数据同步特殊策略、数据转换策略,优先采用数据同步一般策略组织读取源数据库的SQL语句对源数据库的源数据进行读取,获得数据结果集,若不能直接从数据结果集中获取目标数据库所需的数据,则采用数据同步特殊策略组织读取源数据库的SQL语句以对源数据库的源数据进行读取,将根据SQL语句从源数据库中读取结果保存为数据结果集;当不能直接通过数据同步一般策略、数据同步特殊策略中获取目标数据库所需要的信息时,通过数据转换策略中对应设置的数据计算转换公式进行计算,将数据结果集转换成符合要求的数据;
判断读取的源数据库的数据是否需要转换的判断方式包括:若无法通过数据转换和同步策略从源数据库读取的数据中获取目标数据库所需的数据、或若从源数据库读取的字段值与目标数据库需要的字段值不匹配时,则判断为需要转换,通过数据转换策略将读取的源数据库的源数据计算转换成符合要求的数据;
同步步骤:根据数据同步策略组织同步SQL语句,根据同步SQL语句,将从源数据库中读取的数据插入到目标数据库进行同步;根据预同步的源数据库的数据建立索引文件或更新索引文件,同步成功后,将已同步的数据索引从索引文件中删除;
所述数据库同步信息包括:目标数据库连接信息、读取源数据库的SQL语句、与目标数据库对应设置的数据转换和同步策略;
所述数据转换策略包括:读取源数据库的SQL语句、数据计算转换公式。
2.根据权利要求1所述的数据库转换或同步方法,其特征在于:进一步包括:
创建配置文件步骤:创建记录数据库同步信息的配置文件。
3.根据权利要求1所述的数据库转换或同步方法,其特征在于:所述数据结果集包括:每个字段的值、及相应的每个字段值的索引。
4.根据权利要求1所述的数据库转换或同步方法,其特征在于:所述数据同步一般策略包括:目标数据库表结构信息,所述目标数据库表结构信息包括:目标数据库表名、表字段、字段类型、每个字段对应于数据结果集中的字段索引与字段类型中的任意一种或多种;所述数据同步特殊策略包括:读取源数据库数据的SQL语句、参数条件。
5.根据权利要求1所述的数据库转换或同步方法,其特征在于:所述读取源数据库步骤还包括:判断源数据库数据是否有变化,若判断有变化则进行数据过滤,以过滤已同步过的数据不进行读取;所述读取数据转换和同步策略步骤还包括:从配置文件中读取与目标数据库对应设置的数据转换和同步策略后将其放入内存中,所述读取源数据库步骤还包括将数据转换和同步策略从内存中取出进行读取。
6.根据权利要求1至5任意一项所述的数据库转换或同步方法,其特征在于:所述读取源数据步骤进一步包括:根据索引文件中的数据索引读取源数据库的源数据。
7.一种数据库转换或同步系统,其特征在于,包括:
配置文件模块:创建记录数据库同步信息配置文件;所述数据库同步信息包括:目标数据库连接信息、读取源数据库的SQL语句、与目标数据库对应设置的数据转换和同步策略;
读取数据转换和同步策略模块:读取配置文件的与目标数据库对应设置的数据转换和同步策略;
开启目标数据库模块:轮询配置文件中的目标数据库连接信息,开启目标数据库;
读取源数据库模块:读取数据转换和同步策略,根据数据转换和同步策略组织读取源数据库的SQL语句,根据SQL语句从源数据库中读取源数据;
数据转换和同步策略包括:同步策略和转换策略,根据同步策略组织读取源数据库的SQL语句,根据SQL语句从源数据库中读取源数据,获取数据结果集;判断读取的源数据库数据是否需要转换,若判断需要转换则根据数据转换策略将读取的源数据库的数据进行计算转换成目标数据库所需的数据;
所述同步策略包括:数据同步一般策略、数据同步特殊策略;
所述读取源数据库模块中,优先采用数据同步一般策略组织读取源数据库的SQL语句,以对源数据库的源数据进行读取;若不能直接从数据结果集中获取目标数据库所需的数据,则采用数据同步特殊策略组织读取源数据库的SQL语句以对源数据库的源数据进行读取;当不能直接通过数据同步一般策略、数据同步特殊策略中获取目标数据库所需要的信息时,通过数据转换策略中对应设置的数据计算转换公式进行计算,转换成符合要求的数据;
所述读取源数据库模块还包括:判断源数据库变化单元、判断数据转换单元,
所述判断源数据库变化单元:判断源数据库数据是否有变化,若判断有变化则进行数据过滤,以过滤已同步过的数据不进行读取,
所述判断数据转换单元:判断读取的源数据库的数据是否需要转换,若需要转换则通过数据转换策略将从源数据库读取的源数据进行转换后,根据数据转换策略组织读取源数据库的SQL语句;
所述判断数据转换单元的判断方式为通过判断源数据库读取的字段值与目标数据库需要的字段值是否匹配进行判断,若从源数据库读取的字段值与目标数据库需要的字段值不匹配时,则判断为读取的源数据库中的数据需要转换,则通过数据转换策略将读取的源数据库的源数据计算转换成符合要求的数据;否,则读取的源数据库中的数据不需要转换;
同步模块:根据数据同步策略组织同步SQL语句,根据同步SQL语句,将从源数据库中读取的数据插入到目标数据库进行同步,根据预同步的源数据库的数据建立索引文件或更新索引文件,同步成功后,将已同步的数据索引从索引文件中删除;
所述数据转换策略包括:读取源数据库的SQL语句、数据计算转换公式。
8.根据权利要求7所述的数据库转换或同步系统,其特征在于:所述数据同步一般策略包括:目标数据库表结构信息,目标数据库表结构信息包括:目标数据库表名、表字段、字段类型、每个字段对应于数据结果集中的字段索引与字段类型的任意一种或多种。
CN201210456722.9A 2012-11-14 2012-11-14 数据库转换或同步方法及系统 Active CN102915377B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201210456722.9A CN102915377B (zh) 2012-11-14 2012-11-14 数据库转换或同步方法及系统

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201210456722.9A CN102915377B (zh) 2012-11-14 2012-11-14 数据库转换或同步方法及系统

Publications (2)

Publication Number Publication Date
CN102915377A CN102915377A (zh) 2013-02-06
CN102915377B true CN102915377B (zh) 2016-08-03

Family

ID=47613743

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201210456722.9A Active CN102915377B (zh) 2012-11-14 2012-11-14 数据库转换或同步方法及系统

Country Status (1)

Country Link
CN (1) CN102915377B (zh)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN107844506A (zh) * 2016-09-21 2018-03-27 阿里巴巴集团控股有限公司 一种实现数据库与缓存的数据同步的方法及装置

Families Citing this family (27)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN103442029B (zh) * 2013-07-29 2016-12-28 广东电网公司电力科学研究院 异构实时历史数据库同步方法和系统
CN103544303B (zh) * 2013-10-31 2017-06-20 北京锐安科技有限公司 一种数据同步方法、系统和设备
CN104915341B (zh) * 2014-03-10 2018-06-26 中国科学院沈阳自动化研究所 可视化多数据库etl集成方法和系统
CN105786806B (zh) * 2014-12-15 2018-12-04 钟叶青 数据库转换的同步系统及其方法
CN105095518B (zh) * 2015-09-18 2018-10-16 中国农业银行股份有限公司 一种数据转换方法及装置
CN106557497A (zh) * 2015-09-25 2017-04-05 阿里巴巴集团控股有限公司 一种数据同步方法和装置
CN106649378B (zh) * 2015-11-02 2020-07-14 北大方正集团有限公司 一种数据同步方法及装置
CN106326466A (zh) * 2016-08-31 2017-01-11 天津南大通用数据技术股份有限公司 一种异构表间数据交换方法及装置
CN106503216A (zh) * 2016-11-03 2017-03-15 用友网络科技股份有限公司 支持分层的元数据同步方法及元数据同步装置
CN107980128B (zh) * 2016-11-07 2019-07-26 深圳力维智联技术有限公司 数据对接动态管理方法及装置
CN107317886A (zh) * 2017-08-21 2017-11-03 北京奇艺世纪科技有限公司 一种基于大数据的数据同步方法及装置
CN107679210A (zh) * 2017-10-17 2018-02-09 山东浪潮通软信息科技有限公司 一种报表数据交换方法、装置及系统
CN107844387A (zh) * 2017-10-17 2018-03-27 广东广业开元科技有限公司 一种通用数据备份方法、系统及装置
CN107679232A (zh) * 2017-10-24 2018-02-09 安徽马钢自动化信息技术有限公司 一种sap hana源数据库与其他数据库的同步方法
CN108009282A (zh) * 2017-12-22 2018-05-08 武汉楚鼎信息技术有限公司 一种json数据同步到关系型数据库的方法及系统装置
CN108629002A (zh) * 2018-05-03 2018-10-09 山东汇贸电子口岸有限公司 一种基于kettle的大数据比对方法及装置
CN108897876A (zh) * 2018-06-29 2018-11-27 中科鼎富(北京)科技发展有限公司 一种数据接入方法及装置
CN109815261B (zh) * 2018-12-11 2021-11-02 荣联科技集团股份有限公司 全局搜索功能实现及数据实时同步方法、装置及电子设备
CN109697218A (zh) * 2018-12-25 2019-04-30 广东亿迅科技有限公司 基于配置策略的高效异构数据多写方法与系统
CN111367975B (zh) * 2018-12-25 2023-11-03 中国移动通信集团浙江有限公司 一种多协议数据转换处理方法及装置
CN111813850A (zh) * 2019-04-11 2020-10-23 百度在线网络技术(北京)有限公司 一种异构数据的同步方法、装置、电子设备及存储介质
CN110222119B (zh) * 2019-05-23 2021-08-31 武汉达梦数据库股份有限公司 一种异构数据库的数据转换同步方法、设备及存储介质
CN110825722A (zh) * 2019-11-07 2020-02-21 中电福富信息科技有限公司 基于logstash的批量数据导入方法
CN111125254A (zh) * 2019-12-23 2020-05-08 北京懿医云科技有限公司 数据库同步方法、装置、电子设备及计算机可读介质
CN112395290A (zh) * 2020-11-20 2021-02-23 深圳市麦谷科技有限公司 一种数据同步实现方法及系统
CN113254983B (zh) * 2021-07-13 2021-10-01 卓尔智联(武汉)研究院有限公司 一种数据处理方法及装置
CN115048912A (zh) * 2022-08-12 2022-09-13 成都锐菲网络科技有限公司 高速公路行车数据共享方法及应用

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101000619A (zh) * 2006-12-25 2007-07-18 华为技术有限公司 基于sql的数据同步方法及装置
CN102346775A (zh) * 2011-09-26 2012-02-08 苏州博远容天信息科技有限公司 一种基于日志的异构多源数据库同步方法
WO2012018424A2 (en) * 2010-07-27 2012-02-09 Oracle International Corporation Mysql database heterogeneous log based replication

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101000619A (zh) * 2006-12-25 2007-07-18 华为技术有限公司 基于sql的数据同步方法及装置
WO2012018424A2 (en) * 2010-07-27 2012-02-09 Oracle International Corporation Mysql database heterogeneous log based replication
CN102346775A (zh) * 2011-09-26 2012-02-08 苏州博远容天信息科技有限公司 一种基于日志的异构多源数据库同步方法

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN107844506A (zh) * 2016-09-21 2018-03-27 阿里巴巴集团控股有限公司 一种实现数据库与缓存的数据同步的方法及装置
CN107844506B (zh) * 2016-09-21 2021-06-11 阿里巴巴集团控股有限公司 一种实现数据库与缓存的数据同步的方法及装置

Also Published As

Publication number Publication date
CN102915377A (zh) 2013-02-06

Similar Documents

Publication Publication Date Title
CN102915377B (zh) 数据库转换或同步方法及系统
CN103399888B (zh) 电网模型数据的差分同步方法及系统
CN104933133B (zh) 分布式文件系统中的元数据快照存储和访问方法
CN105975502A (zh) 一种基于cdc方式实现增量抽取数据的方法
CN105677918A (zh) 一种基于Kafka和Quartz的分布式爬虫架构及其实现方法
CN103136200B (zh) 数据更新信息获取方法、装置及数据同步方法、装置
CN106209431B (zh) 一种告警关联方法及网管系统
CN109995594A (zh) 区块链网络资源管理方法、装置及区块链系统
CN106339408B (zh) 数据同步方法、数据同步装置和服务器
CN106657174A (zh) 一种数据同步方法、更新方法及装置
CN104820890B (zh) 一种电力调度设备模型与电网生产设备信息融合方法
CN103327124A (zh) 一种文件同步的方法、装置、客户端、服务器端及设备
CN103327123A (zh) 一种文件同步的方法、客户端、服务器端及设备
CN106407485B (zh) 一种基于相似度比较的url去重方法和系统
CN102857949A (zh) 一种规划数据一致性保证的方法和装置
CN106326040A (zh) 一种快照元数据管理方法和装置
CN103955498A (zh) 一种搜索引擎创建方法及装置
CN108763503A (zh) 一种基于企业私有云的知识库管理系统及方法
CN105787090A (zh) 一种电力数据的olap系统的索引建立方法和系统
CN106802928B (zh) 电网历史数据管理方法及其系统
CN109918369A (zh) 数据存储方法及装置
CN101201769B (zh) 多设备文件同步系统和方法
CN103425673A (zh) 基于lucene的索引同步搜索方法及其装置
CN109710693A (zh) 一种ldap域数据同步的递归实现方法及系统
CN103117883B (zh) 一种分组设备运行状态同步方法

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
C14 Grant of patent or utility model
GR01 Patent grant