Posted by 淡水河边 on 2010-01-12
利用了mysql自带的工具,效率高,也不怕文件过大。 先说备份 mysqldump -u数据库用户名 -p密码 dbname > 备份路径/导出名.sql 就是把dbname数据库,导出到 备份路径/导出名.sql 恢复 mysql -u数据库用户名 -p密码 dbname < 备份路径/数据库名.sql mysql命令说完了,下面该shell了,用shell来实现mysql的自动备份。 建立shell mysqlback.sh 内容如下: #!/bin/bash X=`date +%Y%m%d` ;获取当天时间,命名用 M=/usr/local/mysql/bin ;mysql程序的路径 B= /usr/back/mysql ;mysql备份的路径 $M/mysqldump -uroot -proot test > $B/$X.sql tar -zcvf $B/$X.tar.gz $B/$X.sql rm -rf $B/$X.sql tar 打包压缩后,rm 删除原sql文件 然后添加到计划任务,每天3点05分自动执行: #echo “05 3 * * * root /usr/back/shell/mysqlback.sh [...]
Posted by 淡水河边 on 2009-10-15
缘由是数据库里的fax是由“区号+空格+号码”组成的,但是现在需要去掉空格。下图: 先说简单点的方法: UPDATE customer_copy set fax=REPLACE(fax,’ ‘,”) where fax REGEXP ‘^[0-9]+[[:space:]][0-9]+’; 细说一下: REPLACE(fax,’ ‘,”),是替换空格 REGEXP ,是mysql里的正则 ‘^[0-9]+[[:space:]][0-9]+’,是匹配 以至少有一个数字开头,后面有个空格,后面再跟着至少一个数字的记录。 再来一个另类的: UPDATE customer_copy set fax= concat(substring_index(fax,’ ‘,1), substring_index(fax,’ ‘,-1)) where fax REGEXP ‘^[0-9]+[[:space:]][0-9]+’; 这里用到了两个函数:concat(),substring_index() concat(p1,p2,p3) 是拼接函数。把他的所有参数连接起来,结果就是p1p2p3 substring_index(str,delim,count) 返回字符串str中,第count个分隔符delim之前的子串. SUBSTRING_INDEX(‘www.mysql.com’, ‘.’, 2); 返回第2个.之前的字串,也就是www.mysql SUBSTRING_INDEX(‘www.mysql.com’, ‘.’, -2); 返回mysql.com 解释一下,如果count是负数,就从右边开始计数和截取。 substring_index(fax,’ ‘,1), 返回区号部分,substring_index(fax,’ ‘,-1), 返回空格后的号码,再用concat一组合,也就是去掉空格后的号码了。