vlookup+mysql定时执行——数据快速迁移
2018-01-08 00:00
471 查看
摘要: vlookup,mysql定时执行
无论在哪个项目中,数据永远是重要的,不可忽视的,但也是闹心的。何谓之闹心?且听我慢慢道来。
数据库的更迭现在变得很是频繁,从以前的关系型数据库到现在的非关系型数据库,从以前单一的使用到现在多个的搭配,可以看到,数据如果想要进行迁移,将会困难重重,麻烦不断,首先就要面对数据库的差异,其次是表字段的不同,最后还有主键ID的生成问题等等。所以,一套简单实用的方法在这个时候就很必要了,不但能大大的减少工作量,还能保证数据的完整性,何乐而不为呢?下面就来一一解读:
一、excel表格函数vlookup
1、什么是vlookup
在整理数据前,首先要做的肯定是将之前的数据库表导到excel表格中,这种基本的操作这里就不演示了。在整理数据时,很多字段需要进行变换,这是一项重复性很高的操作,如果不利用excel特有的函数来处理的话,将很是麻烦且令人头痛。vlookup函数的好处在于可以快速且方便的查找,将两个表格关联进行跨表引用,非常实用,语法规则如下:
VLOOKUP(lookup_value,table_array,col_index_num,range_lookup)
参数说明:
Lookup_value为需要在数据表第一列中进行查找的数值。Lookup_value 可以为数值、引用或文本字符串。当vlookup函数第一参数省略查找值时,表示用0查找。
Table_array为需要在其中查找数据的数据表。使用对区域或区域名称的引用。
col_index_num为table_array 中查找数据的数据列序号。col_index_num 为 1 时,返回 table_array 第一列的数值,col_index_num 为 2 时,返回 table_array 第二列的数值,以此类推。如果 col_index_num 小于1,函数 VLOOKUP 返回错误值#VALUE!;如果 col_index_num 大于 table_array 的列数,函数 VLOOKUP 返回错误值#REF!。
Range_lookup为一逻辑值,指明函数 VLOOKUP 查找时是精确匹配,还是近似匹配。如果为false或0 ,则返回精确匹配,如果找不到,则返回错误值 #N/A。如果 range_lookup 为TRUE或1,函数 VLOOKUP 将查找近似匹配值,也就是说,如果找不到精确匹配值,则返回小于 lookup_value 的最大数值。如果range_lookup 省略,则默认为近似匹配。
简单的来说,VLOOKUP函数是Excel中的一个纵向查找函数,在工作中都有广泛应用,例如可以用来核对数据,多个表格之间快速导入数据等函数功能。功能是按列查找,最终返回该列所需查询列序所对应的值。
2、vlookup函数的使用
先选定需要查询的值,然后选择要查询的区域(同时打开两张表格,必须是和要查询的值有关联的,否则查询不到),最后选择需要的数据的所在列和查询样式(一般用0),如下图所示:
具体的使用步骤可以参考:http://www.jb51.net/office/excel/350609.html,多使用几次就熟能生巧了,挺实用的。
二、mysql定时执行
整理好数据后需要导入表,但由于主键ID的唯一性,需要在导入后生成各自的ID。首先将要导入的表的主键勾选去掉(不然导入会失败,mysql数据库是这样的),导入整理好的excel数据,导入成功后发现这些数据的ID均为空,所以还要进行ID的生成(生成ID后将表的主键勾选保存)。
具体的操作步骤如下:
(1)查看event是否开启:
show variables like '%sche%';
(2)将事件计划开启:
set global event_scheduler =1;
(3)创建存储过程test(其中一个为例,需要根据情况进行修改):
CREATE PROCEDURE test()
BEGIN
UPDATE sy_city SET CITY_ID=REPLACE(UUID(),'-','')
WHERE CITY_ID= (SELECT CITY_ID FROM (SELECT * FROM
sy_city s WHERE s.CITY_ID='' LIMIT 1) a);
END;
(4)创建event e_test(下面的test()是上面第三步中创建的test):
create event if not exists e_test
on schedule every 30 second
on completion preserve
do call test();
经过以上步骤后基本完成ID的生成。
详情可查阅链接:http://database.51cto.com/art/201006/204716.htm,根据需要修改。
无论在哪个项目中,数据永远是重要的,不可忽视的,但也是闹心的。何谓之闹心?且听我慢慢道来。
数据库的更迭现在变得很是频繁,从以前的关系型数据库到现在的非关系型数据库,从以前单一的使用到现在多个的搭配,可以看到,数据如果想要进行迁移,将会困难重重,麻烦不断,首先就要面对数据库的差异,其次是表字段的不同,最后还有主键ID的生成问题等等。所以,一套简单实用的方法在这个时候就很必要了,不但能大大的减少工作量,还能保证数据的完整性,何乐而不为呢?下面就来一一解读:
一、excel表格函数vlookup
1、什么是vlookup
在整理数据前,首先要做的肯定是将之前的数据库表导到excel表格中,这种基本的操作这里就不演示了。在整理数据时,很多字段需要进行变换,这是一项重复性很高的操作,如果不利用excel特有的函数来处理的话,将很是麻烦且令人头痛。vlookup函数的好处在于可以快速且方便的查找,将两个表格关联进行跨表引用,非常实用,语法规则如下:
VLOOKUP(lookup_value,table_array,col_index_num,range_lookup)
参数 | 简单说明 | 输入数据类型 |
---|---|---|
lookup_value | 要查找的值 | 数值、引用或文本字符串 |
table_array | 要查找的区域 | 数据表区域 |
col_index_num | 返回数据在查找区域的第几列 | 正整数 |
range_lookup | 模糊匹配/精确匹配 | TRUE(或不填)/FALSE |
Lookup_value为需要在数据表第一列中进行查找的数值。Lookup_value 可以为数值、引用或文本字符串。当vlookup函数第一参数省略查找值时,表示用0查找。
Table_array为需要在其中查找数据的数据表。使用对区域或区域名称的引用。
col_index_num为table_array 中查找数据的数据列序号。col_index_num 为 1 时,返回 table_array 第一列的数值,col_index_num 为 2 时,返回 table_array 第二列的数值,以此类推。如果 col_index_num 小于1,函数 VLOOKUP 返回错误值#VALUE!;如果 col_index_num 大于 table_array 的列数,函数 VLOOKUP 返回错误值#REF!。
Range_lookup为一逻辑值,指明函数 VLOOKUP 查找时是精确匹配,还是近似匹配。如果为false或0 ,则返回精确匹配,如果找不到,则返回错误值 #N/A。如果 range_lookup 为TRUE或1,函数 VLOOKUP 将查找近似匹配值,也就是说,如果找不到精确匹配值,则返回小于 lookup_value 的最大数值。如果range_lookup 省略,则默认为近似匹配。
简单的来说,VLOOKUP函数是Excel中的一个纵向查找函数,在工作中都有广泛应用,例如可以用来核对数据,多个表格之间快速导入数据等函数功能。功能是按列查找,最终返回该列所需查询列序所对应的值。
2、vlookup函数的使用
先选定需要查询的值,然后选择要查询的区域(同时打开两张表格,必须是和要查询的值有关联的,否则查询不到),最后选择需要的数据的所在列和查询样式(一般用0),如下图所示:
具体的使用步骤可以参考:http://www.jb51.net/office/excel/350609.html,多使用几次就熟能生巧了,挺实用的。
二、mysql定时执行
整理好数据后需要导入表,但由于主键ID的唯一性,需要在导入后生成各自的ID。首先将要导入的表的主键勾选去掉(不然导入会失败,mysql数据库是这样的),导入整理好的excel数据,导入成功后发现这些数据的ID均为空,所以还要进行ID的生成(生成ID后将表的主键勾选保存)。
具体的操作步骤如下:
(1)查看event是否开启:
show variables like '%sche%';
(2)将事件计划开启:
set global event_scheduler =1;
(3)创建存储过程test(其中一个为例,需要根据情况进行修改):
CREATE PROCEDURE test()
BEGIN
UPDATE sy_city SET CITY_ID=REPLACE(UUID(),'-','')
WHERE CITY_ID= (SELECT CITY_ID FROM (SELECT * FROM
sy_city s WHERE s.CITY_ID='' LIMIT 1) a);
END;
(4)创建event e_test(下面的test()是上面第三步中创建的test):
create event if not exists e_test
on schedule every 30 second
on completion preserve
do call test();
经过以上步骤后基本完成ID的生成。
详情可查阅链接:http://database.51cto.com/art/201006/204716.htm,根据需要修改。
相关文章推荐
- Linux mysql 实现数据快速拷贝迁移
- mysql迁移之巨大数据量快速迁移方案
- mysql通过拷贝文件实现数据快速迁移实例
- mysql数据表最快速迁移,mysql的存储引擎为:myisam
- 定时执行rsync同步数据以及mysql备份
- oracle到mysql的迁移(一):表和数据的迁移
- Mysql 数据迁移后 启动出错
- Docker Mysql容器间数据简单迁移
- 定时执行MySQL语句的二种方法
- 脚本半小时 执行mysql查询相应的数据
- 几百万的数据,mysql快速高效创建索引
- MySql自动执行定时任务
- mysql 备份数据迁移,出错的处理
- 使用SQLyog将sqlserver的数据及表结构迁移到mysql中
- mysql利用存储过程实现对数据库数据的迁移
- 腾讯云,阿里云 MySQL数据迁移到数据盘
- mysql通过拷贝数据文件的方式进行数据库迁移
- 快速禁用Vista数据执行保护
- 分区表数据快速迁移
- SQL Server 迁移数据到MySQL