CN111694812A - 一种数据迁移方法以及数据迁移装置 - Google Patents

一种数据迁移方法以及数据迁移装置 Download PDF

Info

Publication number
CN111694812A
CN111694812A CN202010373136.2A CN202010373136A CN111694812A CN 111694812 A CN111694812 A CN 111694812A CN 202010373136 A CN202010373136 A CN 202010373136A CN 111694812 A CN111694812 A CN 111694812A
Authority
CN
China
Prior art keywords
data
database
migration
script
running
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.)
Pending
Application number
CN202010373136.2A
Other languages
English (en)
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.)
Wuba Co Ltd
Original Assignee
Wuba Co Ltd
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 Wuba Co Ltd filed Critical Wuba Co Ltd
Priority to CN202010373136.2A priority Critical patent/CN111694812A/zh
Publication of CN111694812A publication Critical patent/CN111694812A/zh
Pending legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/21Design, administration or maintenance of databases
    • G06F16/214Database migration support

Landscapes

  • Engineering & Computer Science (AREA)
  • Databases & Information Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Data Mining & Analysis (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

本申请提供一种数据迁移方法以及数据迁移装置,该方法包括:将第一数据库对应的目标标识信息以及第一数据库所在的第一目录位置的信息传入迁移数据脚本,其中,目标标识信息用于唯一标识第一数据库;接收脚本运行指令;响应于脚本运行指令,运行述迁移数据脚本所包含的多个命令,获得运行结果,其中,迁移数据脚本与第二数据库位于同一目录位置下;根据目标标识信息,确定第一数据库对应的数据格式;根据第一数据库对应的数据格式以及运行结果,获取迁移数据文件;根据第一目录位置的信息,在第一数据库所在的第一目录位置下运行迁移数据文件。这样,将数据从一个数据库迁移至其他不同种类的数据库的实现过程简单,数据迁移效率较高。

Description

一种数据迁移方法以及数据迁移装置
技术领域
本申请涉及通信技术领域,尤其涉及一种数据迁移方法以及数据迁移装置。
背景技术
现有技术中,在将数据从一个数据库迁移至另一个数据库时,通常是使用Java或者nodejs等一些语言读取数据库中的数据,然后再将读取到的数据写入其他数据库。
对数据库中的数据进行迁移时,迁移后的数据可能会存储到不同种类的数据库。例如,数据迁移之前使用轻型数据库sqlite存储数据,数据迁移之后可能会存储到mysql、Oracle、Sybase、DB2或者SQL server等等。
在将数据库中的数据迁移至其他不同种类的数据库时,针对每种数据库均要编写相应的程序才能实现将数据迁移至该数据库。例如,若要将轻型数据库sqlite中存储的数据分别迁移至mysql、Oracle、Sybase、DB2以及SQL server这5个不同种类的数据库,就需要相应编写5种不同的程序来实现将数据分别迁移至5个不同种类的数据库。因此,现有技术中,将数据从一个数据库迁移至其他不同种类的数据库的实现过程比较繁琐。
发明内容
本申请提供了一种数据迁移方法以及数据迁移装置,以解决现有技术中,将数据从一个数据库迁移至其他不同种类的数据库的实现过程比较繁琐的问题。
第一方面,本发明提供了一种数据迁移方法,包括:
将第一数据库对应的目标标识信息以及所述第一数据库所在的第一目录位置的信息传入迁移数据脚本,其中,所述目标标识信息用于唯一标识所述第一数据库;
接收脚本运行指令;
响应于所述脚本运行指令,运行所述迁移数据脚本所包含的多个命令,获得运行结果,其中,所述迁移数据脚本与第二数据库位于同一目录位置下;
根据所述目标标识信息,确定所述第一数据库对应的数据格式;
根据所述第一数据库对应的数据格式以及所述运行结果,获取迁移数据文件;
根据所述第一目录位置的信息,在所述第一数据库所在的第一目录位置下运行所述迁移数据文件。
进一步的,所述运行所述迁移数据脚本所包含的多个命令,获得运行结果,包括:
运行所述迁移数据脚本所包含的第一命令,获得所述第二数据库内的表所包含的多个列名;
运行所述迁移数据脚本所包含的第二命令,获得与所述多个列名一一对应的多列数据;
运行所述迁移数据脚本所包含的第三命令,获得所述第二数据库内的表所包含的多个ID值;
所述根据所述第一数据库对应的数据格式以及所述运行结果,获取迁移数据文件,包括:
根据所述第一数据库对应的数据格式、所述多个列名、所述多列数据以及所述多个ID值获取所述迁移数据文件。
进一步的,所述根据所述第一数据库对应的数据格式、所述多个列名、所述多列数据以及所述多个ID值获取所述迁移数据文件,包括:
根据所述第一数据库对应的数据格式、所述多个列名、所述多列数据以及所述多个ID值获取多个迁移语句,其中,所述多个迁移语句中的每个迁移语句的格式与所述第一数据库对应的数据格式相匹配;
创建包含所述多个迁移语句的迁移数据文件。
进一步的,在所述将第一数据库对应的目标标识信息以及所述第一数据库所在的第一目录位置的信息传入迁移数据脚本的步骤之前,所述方法还包括:
设置所述第一数据库与所述目标标识信息的对应关系。
第二方面,本发明还提供了一种数据迁移装置,包括:
传入模块,用于将第一数据库对应的目标标识信息以及所述第一数据库所在的第一目录位置的信息传入迁移数据脚本,其中,所述目标标识信息用于唯一标识所述第一数据库;
接收模块,用于接收脚本运行指令;
第一运行模块,用于响应于所述脚本运行指令,运行所述迁移数据脚本所包含的多个命令,获得运行结果,其中,所述迁移数据脚本与第二数据库位于同一目录位置下;
确定模块,用于根据所述目标标识信息,确定所述第一数据库对应的数据格式;
获取模块,用于根据所述第一数据库对应的数据格式以及所述运行结果,获取迁移数据文件;
第二运行模块,用于根据所述第一目录位置的信息,在所述第一数据库所在的第一目录位置下运行所述迁移数据文件。
进一步的,所述第一运行模块包括:
第一运行子模块,用于运行所述迁移数据脚本所包含的第一命令,获得所述第二数据库内的表所包含的多个列名;
第二运行子模块,用于运行所述迁移数据脚本所包含的第二命令,获得与所述多个列名一一对应的多列数据;
第三运行子模块,用于运行所述迁移数据脚本所包含的第三命令,获得所述第二数据库内的表所包含的多个ID值;
所述获取模块具体用于根据所述第一数据库对应的数据格式、所述多个列名、所述多列数据以及所述多个ID值获取所述迁移数据文件。
进一步的,所述获取模块包括:
获取子模块,用于根据所述第一数据库对应的数据格式、所述多个列名、所述多列数据以及所述多个ID值获取多个迁移语句,其中,所述多个迁移语句中的每个迁移语句的格式与所述第一数据库对应的数据格式相匹配;
创建子模块,用于创建包含所述多个迁移语句的迁移数据文件。
进一步的,所述数据迁移装置还包括:
设置模块,用于设置所述第一数据库与所述目标标识信息的对应关系。
第三方面,本发明还提供了一种电子设备,包括:
存储器,用于存储程序指令;
处理器,用于调用并执行所述存储器中的程序指令,以实现第一方面所述的数据迁移方法。
第四方面,本发明还提供了一种可读存储介质,包括:
所述可读存储介质中存储有计算机程序,当数据迁移装置的至少一个处理器执行所述计算机程序时,数据迁移装置执行第一方面所述的数据迁移方法。
由以上技术方案可知,本发明实施例提供的一种数据迁移方法以及数据迁移装置,
将第一数据库对应的目标标识信息以及所述第一数据库所在的第一目录位置的信息传入迁移数据脚本,其中,所述目标标识信息用于唯一标识所述第一数据库;接收脚本运行指令;响应于所述脚本运行指令,运行所述迁移数据脚本所包含的多个命令,获得运行结果,其中,所述迁移数据脚本与第二数据库位于同一目录位置下;根据所述目标标识信息,确定所述第一数据库对应的数据格式;根据所述第一数据库对应的数据格式以及所述运行结果,获取迁移数据文件;根据所述第一目录位置的信息,在所述第一数据库所在的第一目录位置下运行所述迁移数据文件。这样,可以响应于接收到的脚本运行指令,运行迁移数据脚本所包含的多个命令,获得运行结果。进而可以根据第一数据库对应的数据格式以及运行结果,获取迁移数据文件,并在第一数据库所在的第一目录位置下运行迁移数据文件。将数据从一个数据库迁移至其他不同种类的数据库的实现过程简单,数据迁移效率较高。
附图说明
为了更清楚地说明本申请的技术方案,下面将对实施例中所需要使用的附图作简单地介绍,显而易见地,对于本领域普通技术人员而言,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1为本发明提供的一种数据迁移方法的流程图;
图2为本发明提供的另一种数据迁移方法的流程图;
图3为本发明提供的一种数据迁移装置的结构图;
图4为本发明提供的另一种数据迁移装置的结构图;
图5为本发明提供的另一种数据迁移装置的结构图;
图6为本发明提供的另一种数据迁移装置的结构图;
图7为本发明提供的一种电子设备的硬件结构示意图。
具体实施方式
下面将详细地对实施例进行说明,其示例表示在附图中。下面的描述涉及附图时,除非另有表示,不同附图中的相同数字表示相同或相似的要素。以下实施例中描述的实施方式并不代表与本申请相一致的所有实施方式。仅是与权利要求书中所详述的、本申请的一些方面相一致的系统和方法的示例。
参见图1,图1是本发明提供的一种数据迁移方法的流程图。如图1所示,包括以下步骤:
步骤101、将第一数据库对应的目标标识信息以及所述第一数据库所在的第一目录位置的信息传入迁移数据脚本,其中,所述目标标识信息用于唯一标识所述第一数据库。
在步骤101中,可以将第一数据库对应的目标标识信息以及第一数据库所在的第一目录位置的信息传入迁移数据脚本。其中,目标标识信息用于唯一标识第一数据库。第一数据库为迁入数据库,即接收迁移数据的数据库。例如,第一数据库可以为mysql数据库。目标标识信息可以为mysql的首字母“m”。
步骤102、接收脚本运行指令。
在步骤102中,可以接收脚本运行指令。
步骤103、响应于所述脚本运行指令,运行所述迁移数据脚本所包含的多个命令,获得运行结果,其中,所述迁移数据脚本与第二数据库位于同一目录位置下。
在步骤103中,响应于接收到的脚本运行指令,可以运行迁移数据脚本所包含的多个命令,获得运行结果。其中,迁移数据脚本与第二数据库位于同一目录位置下。第二数据库为原始数据库,即迁出数据的数据库。例如,第二数据库可以为轻型数据库sqlite。
迁移数据脚本可以包含三个命令。
可以运行迁移数据脚本所包含的第一命令,获得第二数据库内的表所包含的多个列名,即可以获得原始数据库内的表所包含的多个列名。例如,可以运行迁移数据脚本所包含的第一命令:“pragma table_info(表名)”,得到以下输出内容:
0|name|TEXT|0||0
1|description|TEXT|0||0
接下来,通过字符串替换就可以获得轻型数据库sqlite内的表所包含的多个列名“name”,“description”。
还可以运行迁移数据脚本所包含的第二命令,获得与上述多个列名一一对应的多列数据。例如,可以运行迁移数据脚本所包含的第二命令:“.mode inser&&.dump表名”,得到如下输出内容:
INSERT INTO表名VALUES('test','test');
INSERT INTO表名VALUES('test','test');
INSERT INTO表名VALUES('test','test');
其中,第一列数据'test'与列名“name”相对应;第二列数据'test'与列名“description”相对应。由上述输出内容得知,轻型数据库sqlite中字符数据的格式为单引号,即第二数据库中字符数据的格式为单引号,也即原始数据库中字符数据的格式为单引号。
还可以运行迁移数据脚本所包含的第三命令,获得第二数据库内的表所包含的多个ID值。例如,可以运行迁移数据脚本所包含的第三命令:“select rowid as id from表名”,得到以下输出内容:
INSERT INTO表名VALUES(1);
INSERT INTO表名VALUES(2);
INSERT INTO表名VALUES(3);
这样,就可以获得轻型数据库sqlite内的表所包含的“rowid”这一列的值,这里将rowid重命名为ID,即获得轻型数据库sqlite内的表所包含的多个ID值。
此时,运行迁移数据脚本所包含的多个命令,所获得的运行结果包括:第二数据库内的表所包含的多个列名,即轻型数据库sqlite内的表所包含的多个列名“name”,“description”;与上述多个列名一一对应的多列数据,即与列名“name”相对应的第一列字符数据'test';与列名“description”相对应的第二列字符数据'test';第二数据库内的表所包含的多个ID值,即轻型数据库sqlite内的表所包含的“rowid”这一列的值。
步骤104、根据所述目标标识信息,确定所述第一数据库对应的数据格式。
在步骤104中,可以根据目标标识信息,确定第一数据库对应的数据格式。可以根据目标标识信息确定该目标标识信息所唯一标识的第一数据库。例如,假设目标标识信息为“m”,如前所述,mysql数据库的目标标识信息为“m”,因此,此时可以确定传入迁移数据脚本的目标标识信息所唯一标识的第一数据库为mysql数据库。接下来,可以确定mysql数据库中字符数据的格式。
步骤105、根据所述第一数据库对应的数据格式以及所述运行结果,获取迁移数据文件。
在步骤105中,可以根据第一数据库对应的数据格式以及运行结果,获取迁移数据文件。例如,可以根据第一数据库对应的数据格式、第二数据库内的表所包含的多个列名、与上述多个列名一一对应的多列数据以及第二数据库内的表所包含的多个ID值获取迁移数据文件。
进一步的,可以根据第一数据库对应的数据格式、第二数据库内的表所包含的多个列名、与上述多个列名一一对应的多列数据以及第二数据库内的表所包含的多个ID值,获取多个迁移语句。其中,多个迁移语句中的每个迁移语句的格式与第一数据库对应的数据格式相匹配。接下来,可以创建包含多个迁移语句的迁移数据文件。
例如,如前所述,运行迁移数据脚本所包含的第二命令:“.mode inser&&.dump表名”之后,由所得到的输出内容可以得知轻型数据库sqlite中字符数据的格式为单引号,即第二数据库中字符数据的格式为单引号,也即原始数据库中字符数据的格式为单引号。
如果mysql数据库中字符数据的格式为单引号,即如果第一数据库中字符数据的格式与第二数据库中字符数据的格式相同,也即如果迁入数据库中字符数据的格式与原始数据库中字符数据的格式相同,则可以直接将运行迁移数据脚本所包含的第一命令之后所获得的多个列名以及运行迁移数据脚本所包含的第三命令之后所获得的多个ID值添加进运行迁移数据脚本所包含的第二命令之后所获得的输出内容中,获得多个迁移语句。
例如,可以直接将运行迁移数据脚本所包含的第一命令之后所获得的多个列名“name”,“description”以及运行迁移数据脚本所包含的第三命令之后所获得的多个ID值添加进运行迁移数据脚本所包含的第二命令之后所获得的输出内容中,获得多个迁移语句:
INSERT INTO表名('id','name','description')VALUES(1,'test','test');
INSERT INTO表名('id','name','description')VALUES(2,'test','test');
INSERT INTO表名('id','name','description')VALUES(3,'test','test');
如果mysql数据库中字符数据的格式为双引号,即如果第一数据库中字符数据的格式与第二数据库中字符数据的格式不同,也即如果迁入数据库中字符数据的格式与原始数据库中字符数据的格式不同,则可以先将运行迁移数据脚本所包含的第二命令之后所获得的输出内容中的字符数据的格式修改为双引号,得到字符数据的格式为双引号的多条语句:
INSERT INTO表名VALUES(“test”,“test”);
INSERT INTO表名VALUES(“test”,“test”);
INSERT INTO表名VALUES(“test”,“test”);
接下来,可以将运行迁移数据脚本所包含的第一命令之后所获得的多个列名以及运行迁移数据脚本所包含的第三命令之后所获得的多个ID值添加进上述字符数据的格式为双引号的多条语句内,获得多个迁移语句。
例如,可以将运行迁移数据脚本所包含的第一命令之后所获得的多个列名“name”,“description”以及运行迁移数据脚本所包含的第三命令之后所获得的多个ID值添加进上述字符数据的格式为双引号的多条语句内,获得多个迁移语句:
INSERT INTO表名('id','name','description')VALUES(1,“test”,“test”);
INSERT INTO表名('id','name','description')VALUES(2,“test”,“test”);
INSERT INTO表名('id','name','description')VALUES(3,“test”,“test”);
获得多个迁移语句之后,即可以创建包含多个迁移语句的迁移数据文件。
步骤106、根据所述第一目录位置的信息,在所述第一数据库所在的第一目录位置下运行所述迁移数据文件。
在步骤106中,可以根据传入迁移数据脚本的第一目录位置的信息,在第一数据库所在的第一目录位置下运行迁移数据文件,即可以在迁入数据库所在的第一目录位置下运行迁移数据文件,也即可以在mysql数据库所在的第一目录位置下运行迁移数据文件。这样,即实现将第二数据库中的数据迁移至第一数据库内。需要说明的是,本实施例以第一数据库为mysql数据库,即以迁入数据库为mysql数据库为例进行说明。当第一数据库为其他类型的数据库时,实现数据迁移的方式与第一数据库为mysql数据库时的处理方式类似,在此不再赘述。
需要说明的是,现有技术中,在将数据库中的数据迁移至其他不同种类的数据库时,针对每种数据库均要编写相应的程序才能实现将数据迁移至该数据库。因此,将数据从一个数据库迁移至其他不同种类的数据库的实现过程比较繁琐。
而在本申请中,响应于接收到的脚本运行指令,可以运行迁移数据脚本所包含的多个命令,获得运行结果。进而可以根据第一数据库对应的数据格式以及运行结果,获取迁移数据文件,并在第一数据库所在的第一目录位置下运行迁移数据文件。将数据从一个数据库迁移至其他不同种类的数据库的实现过程简单,数据迁移效率较高。
由以上技术方案可知,本发明实施例提供的一种数据迁移方法,将第一数据库对应的目标标识信息以及所述第一数据库所在的第一目录位置的信息传入迁移数据脚本,其中,所述目标标识信息用于唯一标识所述第一数据库;接收脚本运行指令;响应于所述脚本运行指令,运行所述迁移数据脚本所包含的多个命令,获得运行结果,其中,所述迁移数据脚本与第二数据库位于同一目录位置下;根据所述目标标识信息,确定所述第一数据库对应的数据格式;根据所述第一数据库对应的数据格式以及所述运行结果,获取迁移数据文件;根据所述第一目录位置的信息,在所述第一数据库所在的第一目录位置下运行所述迁移数据文件。这样,可以响应于接收到的脚本运行指令,运行迁移数据脚本所包含的多个命令,获得运行结果。进而可以根据第一数据库对应的数据格式以及运行结果,获取迁移数据文件,并在第一数据库所在的第一目录位置下运行迁移数据文件。将数据从一个数据库迁移至其他不同种类的数据库的实现过程简单,数据迁移效率较高。
参见图2,图2是本发明提供的另一种数据迁移方法的流程图。如图2所示,包括以下步骤:
步骤201、设置所述第一数据库与所述目标标识信息的对应关系。
在步骤201中,可以设置第一数据库与目标标识信息的对应关系。第一数据库为迁入数据库,即接收迁移数据的数据库。例如,第一数据库可以为mysql数据库、Oracle数据库、Sybase数据库或者DB2数据库等等。mysql数据库的目标标识信息可以为mysql的首字母“m”;Oracle数据库的目标标识信息可以为Oracle的首字母“O”;Sybase数据库的目标标识信息可以为Sybase的首字母“S”;DB2数据库的目标标识信息可以为DB2的首字母“D”。
步骤202、将第一数据库对应的目标标识信息以及所述第一数据库所在的第一目录位置的信息传入迁移数据脚本,其中,所述目标标识信息用于唯一标识所述第一数据库。
在步骤202中,可以将第一数据库对应的目标标识信息以及第一数据库所在的第一目录位置的信息传入迁移数据脚本。其中,目标标识信息用于唯一标识第一数据库。第一数据库为迁入数据库,即接收迁移数据的数据库。例如,第一数据库可以为mysql数据库。如前所述,目标标识信息可以为mysql的首字母“m”。
步骤203、接收脚本运行指令。
在步骤203中,可以接收脚本运行指令。
步骤204、响应于所述脚本运行指令,运行所述迁移数据脚本所包含的多个命令,获得运行结果,其中,所述迁移数据脚本与第二数据库位于同一目录位置下。
在步骤204中,响应于接收到的脚本运行指令,可以运行迁移数据脚本所包含的多个命令,获得运行结果。其中,迁移数据脚本与第二数据库位于同一目录位置下。第二数据库为原始数据库,即迁出数据的数据库。例如,第二数据库可以为轻型数据库sqlite。
步骤205、根据所述目标标识信息,确定所述第一数据库对应的数据格式。
在步骤205中,可以根据目标标识信息,确定第一数据库对应的数据格式。可以根据目标标识信息确定该目标标识信息所唯一标识的第一数据库。例如,假设目标标识信息为“m”,如前所述,mysql数据库的目标标识信息为“m”,因此,此时可以确定传入迁移数据脚本的目标标识信息所唯一标识的第一数据库为mysql数据库。接下来,可以确定mysql数据库中字符数据的格式。
步骤206、根据所述第一数据库对应的数据格式以及所述运行结果,获取迁移数据文件。
在步骤206中,可以根据第一数据库对应的数据格式以及运行结果,获取迁移数据文件。
可选的,所述运行所述迁移数据脚本所包含的多个命令,获得运行结果,包括:
运行所述迁移数据脚本所包含的第一命令,获得所述第二数据库内的表所包含的多个列名;
运行所述迁移数据脚本所包含的第二命令,获得与所述多个列名一一对应的多列数据;
运行所述迁移数据脚本所包含的第三命令,获得所述第二数据库内的表所包含的多个ID值;
所述根据所述第一数据库对应的数据格式以及所述运行结果,获取迁移数据文件,包括:
根据所述第一数据库对应的数据格式、所述多个列名、所述多列数据以及所述多个ID值获取所述迁移数据文件。
迁移数据脚本可以包含三个命令。
可以运行迁移数据脚本所包含的第一命令,获得第二数据库内的表所包含的多个列名,即可以获得原始数据库内的表所包含的多个列名。例如,可以运行迁移数据脚本所包含的第一命令:“pragma table_info(表名)”,得到以下输出内容:
0|name|TEXT|0||0
1|description|TEXT|0||0
接下来,通过字符串替换就可以获得轻型数据库sqlite内的表所包含的多个列名“name”,“description”。
还可以运行迁移数据脚本所包含的第二命令,获得与上述多个列名一一对应的多列数据。例如,可以运行迁移数据脚本所包含的第二命令:“.mode inser&&.dump表名”,得到如下输出内容:
INSERT INTO表名VALUES('test','test');
INSERT INTO表名VALUES('test','test');
INSERT INTO表名VALUES('test','test');
其中,第一列数据'test'与列名“name”相对应;第二列数据'test'与列名“description”相对应。由上述输出内容得知,轻型数据库sqlite中字符数据的格式为单引号,即第二数据库中字符数据的格式为单引号,也即原始数据库中字符数据的格式为单引号。
还可以运行迁移数据脚本所包含的第三命令,获得第二数据库内的表所包含的多个ID值。例如,可以运行迁移数据脚本所包含的第三命令:“select rowid as id from表名”,得到以下输出内容:
INSERT INTO表名VALUES(1);
INSERT INTO表名VALUES(2);
INSERT INTO表名VALUES(3);
这样,就可以获得轻型数据库sqlite内的表所包含的“rowid”这一列的值,这里将rowid重命名为ID,即获得轻型数据库sqlite内的表所包含的多个ID值。
此时,运行迁移数据脚本所包含的多个命令,所获得的运行结果包括:第二数据库内的表所包含的多个列名,即轻型数据库sqlite内的表所包含的多个列名“name”,“description”;与上述多个列名一一对应的多列数据,即与列名“name”相对应的第一列字符数据'test';与列名“description”相对应的第二列字符数据'test';第二数据库内的表所包含的多个ID值,即轻型数据库sqlite内的表所包含的“rowid”这一列的值。
接下来,可以根据第一数据库对应的数据格式、第二数据库内的表所包含的多个列名、与上述多个列名一一对应的多列数据以及第二数据库内的表所包含的多个ID值获取迁移数据文件。
可选的,所述根据所述第一数据库对应的数据格式、所述多个列名、所述多列数据以及所述多个ID值获取所述迁移数据文件,包括:
根据所述第一数据库对应的数据格式、所述多个列名、所述多列数据以及所述多个ID值获取多个迁移语句,其中,所述多个迁移语句中的每个迁移语句的格式与所述第一数据库对应的数据格式相匹配;
创建包含所述多个迁移语句的迁移数据文件。
进一步的,可以根据第一数据库对应的数据格式、第二数据库内的表所包含的多个列名、与上述多个列名一一对应的多列数据以及第二数据库内的表所包含的多个ID值,获取多个迁移语句。其中,多个迁移语句中的每个迁移语句的格式与第一数据库对应的数据格式相匹配。接下来,可以创建包含多个迁移语句的迁移数据文件。
例如,如前所述,运行迁移数据脚本所包含的第二命令:“.mode inser&&.dump表名”之后,由所得到的输出内容可以得知轻型数据库sqlite中字符数据的格式为单引号,即第二数据库中字符数据的格式为单引号,也即原始数据库中字符数据的格式为单引号。
如果mysql数据库中字符数据的格式为单引号,即如果第一数据库中字符数据的格式与第二数据库中字符数据的格式相同,也即如果迁入数据库中字符数据的格式与原始数据库中字符数据的格式相同,则可以直接将运行迁移数据脚本所包含的第一命令之后所获得的多个列名以及运行迁移数据脚本所包含的第三命令之后所获得的多个ID值添加进运行迁移数据脚本所包含的第二命令之后所获得的输出内容中,获得多个迁移语句。
例如,可以直接将运行迁移数据脚本所包含的第一命令之后所获得的多个列名“name”,“description”以及运行迁移数据脚本所包含的第三命令之后所获得的多个ID值添加进运行迁移数据脚本所包含的第二命令之后所获得的输出内容中,获得多个迁移语句:
INSERT INTO表名('id','name','description')VALUES(1,'test','test');
INSERT INTO表名('id','name','description')VALUES(2,'test','test');
INSERT INTO表名('id','name','description')VALUES(3,'test','test');
如果mysql数据库中字符数据的格式为双引号,即如果第一数据库中字符数据的格式与第二数据库中字符数据的格式不同,也即如果迁入数据库中字符数据的格式与原始数据库中字符数据的格式不同,则可以先将运行迁移数据脚本所包含的第二命令之后所获得的输出内容中的字符数据的格式修改为双引号,得到字符数据的格式为双引号的多条语句:
INSERT INTO表名VALUES(“test”,“test”);
INSERT INTO表名VALUES(“test”,“test”);
INSERT INTO表名VALUES(“test”,“test”);
接下来,可以将运行迁移数据脚本所包含的第一命令之后所获得的多个列名以及运行迁移数据脚本所包含的第三命令之后所获得的多个ID值添加进上述字符数据的格式为双引号的多条语句内,获得多个迁移语句。
例如,可以将运行迁移数据脚本所包含的第一命令之后所获得的多个列名“name”,“description”以及运行迁移数据脚本所包含的第三命令之后所获得的多个ID值添加进上述字符数据的格式为双引号的多条语句内,获得多个迁移语句:
INSERT INTO表名('id','name','description')VALUES(1,“test”,“test”);
INSERT INTO表名('id','name','description')VALUES(2,“test”,“test”);
INSERT INTO表名('id','name','description')VALUES(3,“test”,“test”);
获得多个迁移语句之后,即可以创建包含多个迁移语句的迁移数据文件。
步骤207、根据所述第一目录位置的信息,在所述第一数据库所在的第一目录位置下运行所述迁移数据文件。
在步骤207中,可以根据传入迁移数据脚本的第一目录位置的信息,在第一数据库所在的第一目录位置下运行迁移数据文件,即可以在迁入数据库所在的第一目录位置下运行迁移数据文件,也即可以在mysql数据库所在的第一目录位置下运行迁移数据文件。这样,即实现将第二数据库中的数据迁移至第一数据库内。需要说明的是,本实施例以第一数据库为mysql数据库,即以迁入数据库为mysql数据库为例进行说明。当第一数据库为其他类型的数据库时,实现数据迁移的方式与第一数据库为mysql数据库时的处理方式类似,在此不再赘述。
由以上技术方案可知,本发明实施例提供的一种数据迁移方法,可以响应于接收到的脚本运行指令,运行迁移数据脚本所包含的多个命令,获得运行结果。进而可以根据第一数据库对应的数据格式以及运行结果,获取迁移数据文件,并在第一数据库所在的第一目录位置下运行迁移数据文件。将数据从一个数据库迁移至其他不同种类的数据库的实现过程简单,数据迁移效率较高。
参见图3,图3是本发明提供的一种数据迁移装置的结构图。如图3所示,数据迁移装置300包括传入模块301、接收模块302、第一运行模块303、确定模块304、获取模块305和第二运行模块306,其中:
传入模块301,用于将第一数据库对应的目标标识信息以及所述第一数据库所在的第一目录位置的信息传入迁移数据脚本,其中,所述目标标识信息用于唯一标识所述第一数据库;
接收模块302,用于接收脚本运行指令;
第一运行模块303,用于响应于所述脚本运行指令,运行所述迁移数据脚本所包含的多个命令,获得运行结果,其中,所述迁移数据脚本与第二数据库位于同一目录位置下;
确定模块304,用于根据所述目标标识信息,确定所述第一数据库对应的数据格式;
获取模块305,用于根据所述第一数据库对应的数据格式以及所述运行结果,获取迁移数据文件;
第二运行模块306,用于根据所述第一目录位置的信息,在所述第一数据库所在的第一目录位置下运行所述迁移数据文件。
可选的,如图4所示,所述第一运行模块303包括:
第一运行子模块3031,用于运行所述迁移数据脚本所包含的第一命令,获得所述第二数据库内的表所包含的多个列名;
第二运行子模块3032,用于运行所述迁移数据脚本所包含的第二命令,获得与所述多个列名一一对应的多列数据;
第三运行子模块3033,用于运行所述迁移数据脚本所包含的第三命令,获得所述第二数据库内的表所包含的多个ID值;
所述获取模块305具体用于根据所述第一数据库对应的数据格式、所述多个列名、所述多列数据以及所述多个ID值获取所述迁移数据文件。
可选的,如图5所示,所述获取模块305包括:
获取子模块3051,用于根据所述第一数据库对应的数据格式、所述多个列名、所述多列数据以及所述多个ID值获取多个迁移语句,其中,所述多个迁移语句中的每个迁移语句的格式与所述第一数据库对应的数据格式相匹配;
创建子模块3052,用于创建包含所述多个迁移语句的迁移数据文件。
可选的,如图6所示,所述数据迁移装置还包括:
设置模块307,用于设置所述第一数据库与所述目标标识信息的对应关系。
数据迁移装置300能够实现图1-图2的方法实施例中数据迁移装置实现的各个过程,为避免重复,这里不再赘述。且数据迁移装置300可以实现响应于接收到的脚本运行指令,运行迁移数据脚本所包含的多个命令,获得运行结果。进而可以根据第一数据库对应的数据格式以及运行结果,获取迁移数据文件,并在第一数据库所在的第一目录位置下运行迁移数据文件。将数据从一个数据库迁移至其他不同种类的数据库的实现过程简单,数据迁移效率较高。
图7为本发明实施例提供的电子设备的硬件结构示意图。如图7所示,该电子设备,包括:
存储器701,用于存储程序指令;
处理器702,用于调用并执行所述存储器中的程序指令,以实现上述实施例中所述数据迁移方法。具体可以参见前述实施例中的相关描述。
本实施例中,处理器702和存储器701可通过总线或其他方式连接。处理器可以是通用处理器,例如中央处理器、数字信号处理器、专用集成电路,或者被配置成实施本发明实施例的一个或多个集成电路。存储器可以包括易失性存储器,例如随机存取存储器;存储器也可以包括非易失性存储器,例如只读存储器、快闪存储器、硬盘或固态硬盘。
本发明实施例还提供了一种可读存储介质,包括:所述可读存储介质中存储有计算机程序,当数据迁移装置的至少一个处理器执行所述计算机程序时,数据迁移装置执行上述实施例中所述的数据迁移方法。
所述的可读存储介质可为磁碟、光盘、只读存储记忆体(英文:read-only memory,简称:ROM)或随机存储记忆体(英文:random access memory,简称:RAM)等。
本领域的技术人员可以清楚地了解到本发明实施例中的技术可借助软件加必需的通用硬件平台的方式来实现。基于这样的理解,本发明实施例中的技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品可以存储在存储介质中,如ROM/RAM、磁碟、光盘等,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本发明各个实施例或者实施例的某些部分所述的方法。
本说明书中各个实施例之间相同相似的部分互相参见即可。尤其,对于数据迁移装置、电子设备及可读存储介质实施例而言,由于其基本相似于方法实施例,所以描述的比较简单,相关之处参见方法实施例中的说明即可。
以上所述的本发明实施方式并不构成对本发明保护范围的限定。

Claims (10)

1.一种数据迁移方法,其特征在于,包括:
将第一数据库对应的目标标识信息以及所述第一数据库所在的第一目录位置的信息传入迁移数据脚本,其中,所述目标标识信息用于唯一标识所述第一数据库;
接收脚本运行指令;
响应于所述脚本运行指令,运行所述迁移数据脚本所包含的多个命令,获得运行结果,其中,所述迁移数据脚本与第二数据库位于同一目录位置下;
根据所述目标标识信息,确定所述第一数据库对应的数据格式;
根据所述第一数据库对应的数据格式以及所述运行结果,获取迁移数据文件;
根据所述第一目录位置的信息,在所述第一数据库所在的第一目录位置下运行所述迁移数据文件。
2.如权利要求1所述的方法,其特征在于,所述运行所述迁移数据脚本所包含的多个命令,获得运行结果,包括:
运行所述迁移数据脚本所包含的第一命令,获得所述第二数据库内的表所包含的多个列名;
运行所述迁移数据脚本所包含的第二命令,获得与所述多个列名一一对应的多列数据;
运行所述迁移数据脚本所包含的第三命令,获得所述第二数据库内的表所包含的多个ID值;
所述根据所述第一数据库对应的数据格式以及所述运行结果,获取迁移数据文件,包括:
根据所述第一数据库对应的数据格式、所述多个列名、所述多列数据以及所述多个ID值获取所述迁移数据文件。
3.如权利要求2所述的方法,其特征在于,所述根据所述第一数据库对应的数据格式、所述多个列名、所述多列数据以及所述多个ID值获取所述迁移数据文件,包括:
根据所述第一数据库对应的数据格式、所述多个列名、所述多列数据以及所述多个ID值获取多个迁移语句,其中,所述多个迁移语句中的每个迁移语句的格式与所述第一数据库对应的数据格式相匹配;
创建包含所述多个迁移语句的迁移数据文件。
4.如权利要求1至3中任一项所述的方法,其特征在于,在所述将第一数据库对应的目标标识信息以及所述第一数据库所在的第一目录位置的信息传入迁移数据脚本的步骤之前,所述方法还包括:
设置所述第一数据库与所述目标标识信息的对应关系。
5.一种数据迁移装置,其特征在于,包括:
传入模块,用于将第一数据库对应的目标标识信息以及所述第一数据库所在的第一目录位置的信息传入迁移数据脚本,其中,所述目标标识信息用于唯一标识所述第一数据库;
接收模块,用于接收脚本运行指令;
第一运行模块,用于响应于所述脚本运行指令,运行所述迁移数据脚本所包含的多个命令,获得运行结果,其中,所述迁移数据脚本与第二数据库位于同一目录位置下;
确定模块,用于根据所述目标标识信息,确定所述第一数据库对应的数据格式;
获取模块,用于根据所述第一数据库对应的数据格式以及所述运行结果,获取迁移数据文件;
第二运行模块,用于根据所述第一目录位置的信息,在所述第一数据库所在的第一目录位置下运行所述迁移数据文件。
6.如权利要求5所述的数据迁移装置,其特征在于,所述第一运行模块包括:
第一运行子模块,用于运行所述迁移数据脚本所包含的第一命令,获得所述第二数据库内的表所包含的多个列名;
第二运行子模块,用于运行所述迁移数据脚本所包含的第二命令,获得与所述多个列名一一对应的多列数据;
第三运行子模块,用于运行所述迁移数据脚本所包含的第三命令,获得所述第二数据库内的表所包含的多个ID值;
所述获取模块具体用于根据所述第一数据库对应的数据格式、所述多个列名、所述多列数据以及所述多个ID值获取所述迁移数据文件。
7.如权利要求6所述的数据迁移装置,其特征在于,所述获取模块包括:
获取子模块,用于根据所述第一数据库对应的数据格式、所述多个列名、所述多列数据以及所述多个ID值获取多个迁移语句,其中,所述多个迁移语句中的每个迁移语句的格式与所述第一数据库对应的数据格式相匹配;
创建子模块,用于创建包含所述多个迁移语句的迁移数据文件。
8.如权利要求5至7中任一项所述的数据迁移装置,其特征在于,所述数据迁移装置还包括:
设置模块,用于设置所述第一数据库与所述目标标识信息的对应关系。
9.一种电子设备,其特征在于,包括:
存储器,用于存储程序指令;
处理器,用于调用并执行所述存储器中的程序指令,以实现权利要求1~4任一项所述的数据迁移方法。
10.一种可读存储介质,其特征在于,所述可读存储介质中存储有计算机程序,当数据迁移装置的至少一个处理器执行所述计算机程序时,数据迁移装置执行权利要求1~4任一项所述的数据迁移方法。
CN202010373136.2A 2020-05-06 2020-05-06 一种数据迁移方法以及数据迁移装置 Pending CN111694812A (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202010373136.2A CN111694812A (zh) 2020-05-06 2020-05-06 一种数据迁移方法以及数据迁移装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202010373136.2A CN111694812A (zh) 2020-05-06 2020-05-06 一种数据迁移方法以及数据迁移装置

Publications (1)

Publication Number Publication Date
CN111694812A true CN111694812A (zh) 2020-09-22

Family

ID=72477083

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202010373136.2A Pending CN111694812A (zh) 2020-05-06 2020-05-06 一种数据迁移方法以及数据迁移装置

Country Status (1)

Country Link
CN (1) CN111694812A (zh)

Citations (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN108052681A (zh) * 2018-01-12 2018-05-18 毛彬 一种关系型数据库间结构化数据的同步方法及系统
CN108255966A (zh) * 2017-12-25 2018-07-06 太极计算机股份有限公司 一种数据迁移方法及存储介质
JP2019066939A (ja) * 2017-09-28 2019-04-25 Kddi株式会社 移行管理装置及び移行管理方法
CN110209652A (zh) * 2019-05-20 2019-09-06 平安科技(深圳)有限公司 数据表迁移方法、装置、计算机设备和存储介质
CN110674113A (zh) * 2019-09-24 2020-01-10 咪咕音乐有限公司 数据的一键迁移方法、装置、电子设备及存储介质
CN110704398A (zh) * 2019-09-30 2020-01-17 深圳前海环融联易信息科技服务有限公司 从MySQL到Oracle的数据库迁移方法、装置及计算机设备
CN110795418A (zh) * 2019-09-23 2020-02-14 紫光云(南京)数字技术有限公司 一种基于json的mongoDB到mysql的数据抽取方法

Patent Citations (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2019066939A (ja) * 2017-09-28 2019-04-25 Kddi株式会社 移行管理装置及び移行管理方法
CN108255966A (zh) * 2017-12-25 2018-07-06 太极计算机股份有限公司 一种数据迁移方法及存储介质
CN108052681A (zh) * 2018-01-12 2018-05-18 毛彬 一种关系型数据库间结构化数据的同步方法及系统
CN110209652A (zh) * 2019-05-20 2019-09-06 平安科技(深圳)有限公司 数据表迁移方法、装置、计算机设备和存储介质
CN110795418A (zh) * 2019-09-23 2020-02-14 紫光云(南京)数字技术有限公司 一种基于json的mongoDB到mysql的数据抽取方法
CN110674113A (zh) * 2019-09-24 2020-01-10 咪咕音乐有限公司 数据的一键迁移方法、装置、电子设备及存储介质
CN110704398A (zh) * 2019-09-30 2020-01-17 深圳前海环融联易信息科技服务有限公司 从MySQL到Oracle的数据库迁移方法、装置及计算机设备

Similar Documents

Publication Publication Date Title
CN111324610A (zh) 一种数据同步的方法及装置
CN108334609B (zh) Oracle中实现JSON格式数据存取的方法、装置、设备及存储介质
US9384202B1 (en) Gateway module to access different types of databases
CN110019111B (zh) 数据处理方法、装置、存储介质以及处理器
CN109376142B (zh) 数据迁移方法及终端设备
CN108664546B (zh) Xml数据结构转换方法和装置
CN111104151A (zh) 一种基于Shell脚本的Git代码简化的管理方法
CN105677805A (zh) 一种利用protobuf的数据存储、读取方法及装置
CN108694172B (zh) 信息输出方法和装置
CN115080114B (zh) 应用程序的移植处理方法、装置和介质
US7657528B2 (en) Method, computer program product and article of manufacture for providing service-to-role assignment to launch application services in role-based computer system
KR101260436B1 (ko) 구조화 질의어 자동 처리 시스템과 방법 및 그를 실행하기 위한 프로그램이 기록되는 컴퓨터로 읽을 수 있는 기록매체
CN111694812A (zh) 一种数据迁移方法以及数据迁移装置
CN113326063B (zh) 数据处理方法、电子设备及存储介质
CN114816247A (zh) 一种逻辑数据获取方法及装置
CN111966687B (zh) 一种大型机db2数据库表分区方法和装置
CN111259003B (zh) 一种数据库建立方法及装置
CN115617773A (zh) 数据迁移的方法、装置和系统
CN113377681A (zh) 测试案例数据处理方法、装置、电子设备及存储介质
CN108334621B (zh) 数据库操作方法、装置、设备及计算机可读存储介质
CN112817931A (zh) 一种增量版本文件的生成方法及装置
CN111400396A (zh) 数据同步脚本的生成方法、装置及计算机可读存储介质
CN111562907A (zh) 自定义接口数据的转换方法与系统
CN116594917B (zh) Ui测试方法和装置、电子设备及机器可读存储介质
CN111488150B (zh) 页面处理的方法和装置

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination
RJ01 Rejection of invention patent application after publication

Application publication date: 20200922