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

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

2016-01-20 22:54 543 查看
在工作中经常会对手上的数据进行二次处理,今天我就遇到一个问题。经理把一个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;

刷新数据库,数据就成功从插入到新表中
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: