MySQL的类型转换convert/cast,和SQL Server有点点差别

http://blog.csdn.net/zzcv_/article/details/1871630

 

很简单的东西, 会写在这是因为我用 conver(bigint,xxx) 不成功。后查资料,发现要用signed。发现比SQL Server限制大些,不能随便填数据类型,只有几个固定参数和字符集转化的能力。

 

字符集转换 :   CONVERT(xxx  USING   gb2312)

类型转换和SQL Server一样,就是类型参数有点点不同  : CAST(xxx  AS   类型)  ,   CONVERT(xxx,类型)

可用的类型
二进制,同带binary前缀的效果 : BINARY
字符型,可带参数 : CHAR()
日期 : DATE
时间: TIME
日期时间型 : DATETIME
浮点数 : DECIMAL
整数 : SIGNED
无符号整数 : UNSIGNED

update ljl_userinfo set born_time = convert(CONCAT(SUBSTRING(id_card,7,4),’-‘,SUBSTRING(id_card,11,2),’-‘,SUBSTRING(id_card,13,2)),DATE)
where LENGTH(id_card) = 18 and id_card is not null and convert(SUBSTRING(id_card,7,4),UNSIGNED) > 1900 and convert(SUBSTRING(id_card,7,4),UNSIGNED) < 2100

存储过程2

DELIMITER $$
CREATE PROCEDURE deal_diqu()
BEGIN
— 定义变量
DECLARE id_var INT(11);
DECLARE h_code_var INT(11);
DECLARE _region_name VARCHAR(50);
DECLARE _region_name_var VARCHAR(50);
DECLARE _father_id INT(11);
DECLARE s_count INT(11);
DECLARE s_count_var INT(11);

DECLARE stop_flag TINYINT;

— 遍历数据结束标志
DECLARE done INT DEFAULT FALSE;
DECLARE cur CURSOR FOR SELECT `id`,`h_code` FROM `wo_resume`;

— 将结束标志绑定到游标
DECLARE CONTINUE HANDLER FOR NOT FOUND SET done = TRUE;
DECLARE CONTINUE HANDLER FOR SQLSTATE ‘02000’ SET stop_flag = 1;

— 为变量赋值
— SET _nowTime = NOW();
SET stop_flag = 0;

OPEN cur; — 打开游标
FETCH cur INTO id_var,h_code_var;

SELECT count(*),`region_name`,`father_id` into s_count,_region_name,_father_id from `wo_region` where region_code=h_code_var;

IF s_count <> 0 THEN

SELECT count(*),`region_name` into s_count_var,_region_name_var from `wo_region` where region_code=_father_id;

END IF;

WHILE stop_flag<>1 DO — 若游标有下一条记录,循环
IF s_count <> 0 THEN
UPDATE wo_resume SET region_code_city = _father_id,region_name_city = _region_name_var,region_code_district = h_code_var,region_name_district = _region_name WHERE id = id_var;
END IF;

FETCH cur INTO id_var,h_code_var;

SELECT count(*),`region_name`,`father_id` into s_count,_region_name,_father_id from `wo_region` where region_code = h_code_var;
IF s_count <> 0 THEN
SELECT count(*),`region_name` into s_count_var,_region_name_var from `wo_region` where region_code = _father_id;
END IF;

END WHILE;
CLOSE cur; — 关闭游标

END $$
DELIMITER ;

mysql 存储过程游标嵌套

DELIMITER $$
CREATE PROCEDURE deal_peixunshuju()
BEGIN
— 定义变量
DECLARE id_var INT(11);
DECLARE username_var VARCHAR(100);
DECLARE auth_key_var VARCHAR(32);
DECLARE password_hash_var VARCHAR(200);
DECLARE password_cn_var VARCHAR(100);
DECLARE phone_var VARCHAR(50);
DECLARE state_var TINYINT(3);
DECLARE created_at_var INT(11);
DECLARE status_var TINYINT(3);
DECLARE updated_at_var INT(11);
DECLARE weixin_user_id_var INT(11);
DECLARE cardid_var VARCHAR(50);

DECLARE id_tmp INT(11);
DECLARE truename_var VARCHAR(50);
DECLARE born_time_var INT(11);
DECLARE sex_var TINYINT(3);
DECLARE region_code_city_var INT(11);
DECLARE region_name_city_var VARCHAR(50);
DECLARE region_code_district_var VARCHAR(50);
DECLARE region_name_district_var VARCHAR(50);
— DECLARE h_province_var VARCHAR(50);
— DECLARE h_city_var VARCHAR(50);
— DECLARE h_district_var VARCHAR(50);
DECLARE school_name_var VARCHAR(50);
DECLARE time_start_var VARCHAR(50);
DECLARE time_end_var VARCHAR(50);
DECLARE major_var VARCHAR(50);
DECLARE education_var VARCHAR(50);
DECLARE resume_id_tmp INT(50);
DECLARE stop_flag TINYINT;

— 遍历数据结束标志
DECLARE done INT DEFAULT FALSE;
DECLARE cur CURSOR FOR SELECT `id`,`phone`,`state`,UNIX_TIMESTAMP(`created_at`),`status`,UNIX_TIMESTAMP(`updated_at`),`fcardid` FROM `ljl_user`;

— DECLARE done_two INT DEFAULT 0;
DECLARE cur_two CURSOR FOR SELECT `school_name`,UNIX_TIMESTAMP(`time_start`),UNIX_TIMESTAMP(`time_end`),`major`,`education` FROM `ljl_course` where user_id = id_var;

— 将结束标志绑定到游标
DECLARE CONTINUE HANDLER FOR NOT FOUND SET done = TRUE;
DECLARE CONTINUE HANDLER FOR SQLSTATE ‘02000’ SET stop_flag=1;

— 为变量赋值
— SET _nowTime = NOW();
SET stop_flag = 0;

OPEN cur; — 打开游标
FETCH cur INTO id_var,phone_var,state_var,created_at_var,status_var,updated_at_var,cardid_var;

SELECT `truename`,UNIX_TIMESTAMP(`born_time`),`sex`,`region_code_city`,`region_name_city`,`region_code_district`,`region_name_district` into truename_var,born_time_var,sex_var,region_code_city_var,region_name_city_var,region_code_district_var,region_name_district_var from `ljl_userinfo` where user_id = id_var order by id desc limit 1;
WHILE stop_flag<>1 DO — 若游标有下一条记录,循环
INSERT INTO wo_user(`id`,`username`,`auth_key`,`password_hash`,`password_cn`,`phone`,`state`,`created_at`,`status`,`updated_at`,`weixin_user_id`, `temp_id` ) VALUES(null,phone_var,”,”,”,phone_var,state_var,created_at_var,status_var,updated_at_var,”,id_var);

SELECT id into id_tmp from wo_user where temp_id = id_var;
INSERT INTO wo_resume(`id`,`user_id`,`truename`,`phone`,`born_time`,`sex`,`h_code`,`h_province`,`h_city`,`h_district`,`id_card` ) VALUES(null,id_tmp,truename_var,phone_var,born_time_var,sex_var,region_code_city_var,region_name_city_var,region_code_district_var,region_name_district_var,cardid_var);
SELECT id into resume_id_tmp from wo_resume where user_id = id_tmp;

— done_two = 0;

— DECLARE cur_two CURSOR FOR SELECT `ree_id`,`school_name`,UNIX_TIMESTAMP(`time_start`),UNIX_TIMESTAMP(`time_end`),`major`,`education` FROM `ljl_course` where user_id = id_var;
— 异常处理
— declare CONTINUE HANDLER FOR SQLSTATE ‘02000’ SET done_two=1;
OPEN cur_two;
FETCH cur_two into school_name_var,time_start_var,time_end_var,major_var,education_var;
— 循环插入数据
while stop_flag <>1 DO

INSERT INTO `wo_resume_education_experience` (`ree_id`, `school_name`, `time_start`, `time_end`, `major`, `education_old`,`resume_id`,`user_id`) VALUES (null, school_name_var,time_start_var,time_end_var, major_var,education_var,resume_id_tmp,id_tmp);
UPDATE wo_resume SET pc_name_old=major_var WHERE id=resume_id_tmp;

FETCH cur_two into school_name_var,time_start_var,time_end_var,major_var,education_var;
END WHILE;
— 关闭游标
CLOSE cur_two;

SET stop_flag = 0;

FETCH cur INTO id_var,phone_var,state_var,created_at_var,status_var,updated_at_var,cardid_var;
SELECT `truename`,UNIX_TIMESTAMP(`born_time`),`sex`,`region_code_city`,`region_name_city`,`region_code_district`,`region_name_district` into truename_var,born_time_var,sex_var,region_code_city_var,region_name_city_var,region_code_district_var,region_name_district_var from `ljl_userinfo` where user_id=id_var order by id desc limit 1;
END WHILE;
CLOSE cur; — 关闭游标

END $$
DELIMITER ;

centos7 crontab 计划任务

yum install vixie-cron

yum install crontabs

/bin/systemctl restart crond.service  #启动服务

/bin/systemctl reload  crond.service  #重新载入配置

/bin/systemctl status  crond.service  #查看crontab服务状态

1、crontab相关命令

功能说明:设置计时器。

语  法:crontab [-u <用户名称>][配置文件] 或 crontab [-u <用户名称>][-elr]

补充说明:cron是一个常驻服务,它提供计时器的功能,让用户在特定的时间得以执行预设的指令或程序。只要用户会编辑计时器的配置文件,就可以使用计时器的功能。

配置文件格式:Minute Hour Day Month DayOFWeek Command

参  数: 
-e  编辑该用户的计时器设置。
-l  列出该用户的计时器设置。
-r  删除该用户的计时器设置。
-u<用户名称>  指定要设定计时器的用户名称。

 

2、crontab 配置文件格式

  基本格式 :
*      *   *   *   *  command
分   时  日  月  周   命令

第1列表示分钟1~59 每分钟用*或者 */1表示
第2列表示小时1~23(0表示0点)
第3列表示日期1~31
第4列表示月份1~12
第5列标识号星期0~6(0表示星期天)
第6列要运行的命令

除了数字还有几个个特殊的符号就是”*”、”/”和”-“、”,”,*代表所有的取值范围内的数字,”/”代表每的意思,”*/5″表示每5个单位,”-“代表从某个数字到某个数字,”,”分开几个离散的数字。

crontab文件的一些例子:

30 21 * * * /usr/local/etc/rc.d/apache restart          #每晚的21:30 重启apache
45 4 1,10,22 * * /usr/local/etc/rc.d/apache restart     #每月1、10、22日的4 : 45重启apache 
10 1 * * 6,0 /usr/local/etc/rc.d/apache restart          #每周六、周日的1 : 10重启apache  0,30 18-23 
* * * /usr/local/etc/rc.d/apache restart                  #每天18 : 00至23 : 00之间每隔30分钟重启apache  
0 23 * * 6 /usr/local/etc/rc.d/apache restart           #每星期六的11 : 00 pm重启apache
* 23-7/1 * * * /usr/local/etc/rc.d/apache restart       #晚上11点到早上7点之间,每隔一小时重启  
apache* */1 * * * /usr/local/etc/rc.d/apache restart     #每一小时重启apache   
0 11 4 * mon-wed /usr/local/etc/rc.d/apache restart      #每月的4号与每周一到周三的11点重启apache   
0 4 1 jan * /usr/local/etc/rc.d/apache restart          #一月一号的4点重启apache  
*/30 * * * * /usr/sbin/ntpdate 210.72.145.44            #每半小时同步一下时间 
0 */2 * * * www /usr/bin/somecommand >> /dev/null 2>&1  #以用户www的身份每两小时就运行某个程序:

3、其他任务调度

cron默认配置了调度任务,分别为:hourly、daily、weekly、mouthly,默认配置文件为/etc/anacrontab

将需要执行的脚本放到相应的目录下即可,目录分别为:

/etc/cron.hourly

/etc/cron.daily

/etc/cron.weekly

/ect/cron.mouthly

cron 的主配置文件是 /etc/crontab,它包括下面几行:

SHELL=/bin/bash
PATH=/sbin:/bin:/usr/sbin:/usr/bin
MAILTO=root
HOME=/# run-parts01 * * * * root run-parts /etc/cron.hourly
02 4 * * * root run-parts /etc/cron.daily
22 4 * * 0 root run-parts /etc/cron.weekly
42 4 1 * * root run-parts /etc/cron.monthly

4. 关于cron配置文件/etc/crontab

cron 的主配置文件是 /etc/crontab,它包括下面几行:

SHELL=/bin/bash
PATH=/sbin:/bin:/usr/sbin:/usr/bin
MAILTO=root
HOME=/# run-parts01 * * * * root run-parts /etc/cron.hourly
02 4 * * * root run-parts /etc/cron.daily
22 4 * * 0 root run-parts /etc/cron.weekly
42 4 1 * * root run-parts /etc/cron.monthly

前四行是用来配置 cron 任务运行环境的变量:

Shell 变量的值指定shell 环境(此处默认为 bash shell);PATH 变量定义用来执行命令的程序路径;cron 任务的输出被邮寄给 MAILTO 变量定义的用户名,如果 MAILTO 变量被定义为空白字符串(MAILTO=””),电子邮件就不会被寄出;HOME 变量可以用来设置在执行命令或脚本时使用的主目录。如在 /etc/crontab 文件中run-parts部分所示,它使用 run-parts 脚本来执行存在于 /etc/cron.hourly、/etc/cron.daily、/etc/cron.weekly 和 /etc/cron.monthly 目录中的脚本,这些脚本被相应地按照预设时间在每小时、每日、每周、或每月执行。这些目录中的文件应该是 shell 脚本,并且具有可执行权限(chmod +x filename)。

如果某 cron 任务需要根据调度来执行,而不是每小时、每日、每周、或每月地执行,它可以被添加到/etc/cron.d目录中。该目录中的所有文件使用和 /etc/crontab 中一样的语法。

每次编辑完某个用户的cron设置后,cron自动在/var/spool/cron下生成一个与此用户同名的文件,此用户的cron信息都记录在这个文件中,这个文件是不可以直接编辑的,只可以用crontab -e 来编辑。cron启动后每过一份钟读一次这个文件,检查是否要执行里面的命令。因此此文件修改后不需要重新启动cron服务。

elasticsearch-5.1.1 安装的问题

http://blog.csdn.net/xiegh2014/article/details/53771086

adduser elastic

passwd elastic

chown -R elsearch:elsearch elasticsearch

1、关闭firewall:
systemctl stop firewalld.service #停止firewall
systemctl disable firewalld.service #禁止firewall开机启动

  1. vi /etc/security/limits.conf
    ulimit -n 65536
    elasticsearch  -  nofile 65536
  2. vi /etc/sysctl.conf
    vm.max_map_count=655360
    sysctl -p

show variables like ‘%sche%’;

set global event_scheduler =1;

CREATE PROCEDURE test ()
BEGIN
update examinfo SET endtime = now() WHERE id = 14;
END;

create event if not exists e_test
on schedule every 30 second
on completion preserve
do call test();

关闭事件任务

alter event e_test ON
COMPLETION PRESERVE DISABLE;

开启事件任务

alter event e_test ON
COMPLETION PRESERVE ENABLE;

以上测试均成功,测试环境为mysql 5.4.2-beta-community mysql community server(GPL)

以上的相关内容就是对MySQL定时执行的介绍,望你能有所收获。

mysql 计划任务重启后消失

我们只要修改一配置即可

event_scheduler在mysql的config中设置为OFF有关。去mysql中将配置改为ON则就搞定了。