mysql数据格式化

mysql数据格式化,第1张

用正则表达式选择出来,然后用函数str_to_date来转换

update table_name set release_date = STR_TO_DATE(REPLACE(release_date,' ',''),'%d %M %Y @') where release_date REGEXP'^[0-9]{1,2}.*[July|Janurary|February|May|June|July|August|September|October|November|December|March].*@.*[0-9]$'

其他的类似哦

DATE_FORMAT(date,format)根据格式串format格式化日期或日期和时间值date,返回结果串。可用DATE_FORMAT()来格式化DATE或DATETIME值,以便得到所希望的格式。根据format字符串格式化date值:%S,%s两位数字形式的秒(00,01,...,59)%i两位数字形式的分(00,01,...,59)%H两位数字形式的小时,24小时(00,01,...,23)%h,%I两位数字形式的小时,12小时(01,02,...,12)%k数字形式的小时,24小时(0,1,...,23)%l数字形式的小时,12小时(1,2,...,12)%T24小时的时间形式(hh:mm:ss)%r12小时的时间形式(hh:mm:ssAM或hh:mm:ssPM)%pAM或PM%W一周中每一天的名称(Sunday,Monday,...,Saturday)%a一周中每一天名称的缩写(Sun,Mon,...,Sat)%d两位数字表示月中的天数(00,01,...,31)%e数字形式表示月中的天数(1,2,...,31)%D英文后缀表示月中的天数(1st,2nd,3rd,...)%w以数字形式表示周中的天数(0=Sunday,1=Monday,...,6=Saturday)%j以三位数字表示年中的天数(001,002,...,366)%U周(0,1,52),其中Sunday为周中的第一天%u周(0,1,52),其中Monday为周中的第一天%M月名(January,February,...,December)%b缩写的月名(January,February,...,December)%m两位数字表示的月份(01,02,...,12)%c数字表示的月份(1,2,...,12)%Y四位数字表示的年份%y两位数字表示的年份%%直接值“%”selectdate_format(日期字段,’%Y-%m-%d’)as‘日期’fromtest

从mysql搬一个大表到redis中,你会发现在提取、转换或是载入一行数据时,速度慢的让你难以忍受。这里我就要告诉一个让你解脱的小技巧。使用“管道输出”的方式把mysql命令行产生的内容直接传递给redis-cli,以绕过“中间件”的方式使两者在进行数据 *** 作时达到最佳速度。

一个约八百万行数据的mysql表,原本导入到redis中需要90分钟,使用这个方法后,只需要两分钟。不管你信不信,反正我是信了。

Mysql到Redis的数据协议

redis-cli命令行工具有一个批量插入模式,是专门为批量执行命令设计的。这第一步就是把Mysql查询的内容格式化成redis-cli可用的数据格式。here we go!

我的统计表:

?1234567 CREATE TABLE events_all_time ( id int(11) unsigned NOT NULL AUTO_INCREMENT, action varchar(255) NOT NULL, count int(11) NOT NULL DEFAULT 0, PRIMARY KEY (id), UNIQUE KEY uniq_action (action) )准备在每行数据中执行的redis命令如下:

HSET events_all_time [action] [count]

按照以上redis命令规则,创建一个events_to_redis.sql文件,内容是用来生成redis数据协议格式的SQL:

-- events_to_redis.sql

?12345678910111213141516171819 SELECT CONCAT( "*4\r\n", '$', LENGTH(redis_cmd), '\r\n', redis_cmd, '\r\n', '$', LENGTH(redis_key), '\r\n', redis_key, '\r\n', '$', LENGTH(hkey), '\r\n', hkey, '\r\n', '$', LENGTH(hval), '\r\n', hval, '\r') FROM ( SELECT 'HSET' as redis_cmd, 'events_all_time' AS redis_key, action AS hkey, count AS hval FROM events_all_time ) AS tok, 用下面的命令执行:

?1 mysql stats_db --skip-column-names --raw <events_to_redis.sql | redis-cli --pipe很重要的mysql参数说明:

1.--raw: 使mysql不转换字段值中的换行符。

2.--skip-column-names: 使mysql输出的每行中不包含列名。


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zaji/6168066.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-03-17
下一篇 2023-03-17

发表评论

登录后才能评论

评论列表(0条)

保存