mysql数据库操作字段的一些方法

        在工作中经常会对手上的数据进行二次处理,今天我就遇到一个问题。经理把一个excle表交给我让我把数据放到数据库里面,要求拆分多选字段并把拆分后的字段存到新的表中。刚加班完成任务,趁热打铁,写在博客里一是供自己以后使用,二是希望有需要的朋友可以借鉴。

1、把excel倒入mysql

        第零步,准备好mysql图形化工具navicat,备份好excel文件(在操作有价值的文件的时候一定要先备份!切记!!)

        第一步,把excel表中的字段列名改成英文(推荐 改成英文,貌似直接使用中文也是可以的);

第二步,在navicat中新建数据库,鼠标选中新建的数据库,右方的“导入向导”变成可点击状态;

第三步,点击导入向导,会弹出来一个窗口,选择excel文件(*.xls),此处你也可以根据你数据源的类型选择相应的选项,下一步;

第四步,选择数据源文件,选择表,excel中默认会有若干sheet,选择数据源所在的sheet,下一步;

  第五步,选择excle文件中文件开始的位置,这里需要填入“栏目名行”和“第一个数据行”即可,建议事前处理一下excel文件,删除无关数据

第六步,勾选新建表,下一步,

第七步,选择列,修改数据类型,持续下一步,即可完成导入。

2、去掉数据库字段中的空格

            update set 字段=replace(字段,' ','');

3、去除数据库字段末尾的标点

            update 表 set 字段=left(字段,char_length(字段)-1) where right(字段,1)=',';

       4、拆分数据库字段,插入新的表中

            分别直接运行前两个函数,修改第三个函数的表名和字段顺序即可

         函数1:

          DELIMITER $$
          DROP FUNCTION IF EXISTS `func_get_split_string`$$
  CREATE  FUNCTION `func_get_split_string`( 
  f_string VARCHAR(255),f_delimiter VARCHAR(5),f_order INT) RETURNS VARCHAR(255) CHARSET utf8
          BEGIN  
          DECLARE result  VARCHAR(255) DEFAULT '';  
          SET result = REVERSE(SUBSTRING_INDEX(REVERSE(SUBSTRING_INDEX(f_string,f_delimiter,f_order)),f_delimiter,1));  
          RETURN result;  
          END$$
          DELIMITER ;

函数段2:

DELIMITER $$
DROP FUNCTION IF EXISTS `func_get_split_string_total`$$
CREATE FUNCTION `func_get_split_string_total`(  
f_string VARCHAR(255),f_delimiter VARCHAR(5)  ) RETURNS INT(11)
BEGIN  
  RETURN 1+(LENGTH(f_string) - LENGTH(REPLACE(f_string,f_delimiter,''))); 
END$$
DELIMITER ;

函数3:

DELIMITER $$
DROP FUNCTION IF EXISTS `func_split_string`$$
CREATE FUNCTION `func_split_string`(v_desc VARCHAR(100),v_str VARCHAR(100)) RETURNS VARCHAR(100) CHARSET utf8
BEGIN         
 DECLARE i INT(4);    
DECLARE splitValue VARCHAR(100);   
DECLARE returnStr VARCHAR(100);      
                SET i = 1;                 
         IF(v_str IS NULL OR LENGTH(v_str)=0) 
         THEN      
           RETURN 'error';             
           ELSE             
          WHILE i<=func_get_split_string_total(v_str,';')    
           DO   
INSERT INTO `tools`(uid,`name`) VALUES (v_desc,func_get_split_string(v_str,';',i));          
                SET i = i+1; 
  END WHILE;             
RETURN 'success';         
         END IF;    
END$$
DELIMITER ;

        修改函数3中`tools`(uid,`name`) ,成被插入表名,和对应字段。

       最后一步,调用函数,把数据插入新表中

       执行sql:     select func_split_string(id,name)result  from sheet;

       刷新数据库,数据就成功从插入到新表中






你可能感兴趣的:(数据库)