Vlookup + MySql 数据高效迁移

    不管在哪一个项目中,数据永远是重要的,不可忽视的,但也是闹心的。何谓之闹心?且听我慢慢道来。html

    数据库的更迭如今变得非常频繁,从之前的关系型数据库到如今的非关系型数据库,从之前单一的使用到如今多个的搭配,能够看到,数据若是想要进行迁移,将会困难重重,麻烦不断,首先就要面对数据库的差别,其次是表字段的不一样,最后还有主键ID的生成问题等等。因此,一套简单实用的方法在这个时候就很必要了,不但能大大的减小工做量,还能保证数据的完整性,何乐而不为呢?下面就来一一解读:mysql

    1、excel表格函数vlookupsql

     一、什么是vlookup数据库

    在整理数据前,首先要作的确定是将以前的数据库表导到excel表格中,这种基本的操做这里就不演示了。在整理数据时,不少字段须要进行变换,这是一项重复性很高的操做,若是不利用excel特有的函数来处理的话,将非常麻烦且使人头痛。vlookup函数的好处在于能够快速且方便的查找,将两个表格关联进行跨表引用,很是实用,语法规则以下:函数

VLOOKUP(lookup_value,table_array,col_index_num,range_lookup)spa

参数 简单说明 输入数据类型
lookup_value 要查找的值 数值、引用或文本字符串
table_array 要查找的区域 数据表区域
col_index_num 返回数据在查找区域的第几列  正整数
range_lookup 模糊匹配/精确匹配 TRUE(或不填)/FALSE

参数说明:.net

Lookup_value为须要在数据表第一列中进行查找的数值。Lookup_value 能够为数值、引用或文本字符串。当vlookup函数第一参数省略查找值时,表示用0查找。excel

Table_array为须要在其中查找数据的数据表。使用对区域或区域名称的引用。htm

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中的一个纵向查找函数,在工做中都有普遍应用,例如能够用来核对数据,多个表格之间快速导入数据等函数功能。功能是按列查找,最终返回该列所需查询列序所对应的值。

    二、vlookup函数的使用

    先选定须要查询的值,而后选择要查询的区域(同时打开两张表格,必须是和要查询的值有关联的,不然查询不到),最后选择须要的数据的所在列和查询样式(通常用0),以下图所示:

    具体的使用步骤能够参考:http://www.jb51.net/office/excel/350609.html,多使用几回就熟能生巧了,挺实用的。

    2、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,根据须要修改。

相关文章
相关标签/搜索