您的位置:首页 > 数据库 > MySQL

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要查找的值数值、引用或文本字符串
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,根据需要修改。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  数据迁移 vlookup MySQL