登录  /  注册

ruby小记_MySQL

php中文网
发布: 2016-06-01 13:12:03
原创
1312人浏览过

Ruby

最近在用ruby处理一些数据,这里记下ruby使用时遇到的一些问题。

功能:把更新好的sql文件导入到指定数据库,更新好后对比更新前后该表的md5值

 

1. 获取路径函数

1获得当前执行文件的文件名:

__FILE__

2获得当前文件的目录

File.dirname(__FILE__)

3获得当前执行文件的完整路径

require ‘pathname’

Pathname.new(__FILE__).realpath

 

2. 扫描文件

path扫描下的全部文件

require 'find'

Find.find(path) do |f|

使用string的函数.include对文件名进行筛选

f.include?tag #f中是否包含tag 是返回true 否返回false

不知道是我写法有误还是如何

在三个条件取并的情况下会提示出错,即使我每个条件加上括号都是提示出错最后只好这样写。

if res1 && res2 && res3

 

3. Ruby与mysql

鉴于只是单纯的插入数据跟提取数据就不使用mysql的api了,之前图省事觉得用个api就是顺手拈来的事情,没想到windows下转个mysql的gem是何其的难,下了mysql的gem安装会提示本地编译环境不对,需要安装DevKit,觉得过于繁琐。导入sql只要一句cmd命令就可以了,导出比较麻烦但觉得比安装api方便。虽然不知道导出的方法但是既然能输出就肯定能拿到数据。

1使用system函数执行cmd命令导入sql

command = "mysql -u #{User} -p#{Pass} #{ip} database

system(command)

#{User} -p#{Pass} #{ip} 分别为已定义的User,Pass,ip,字符串变量,sqlList[0]为sql文件名,database为数据库

 

2使用system函数执行cmd命令导出数据表

鉴于原来在网页的做法是获取数据表的数据按字段列排列在内存是连续的一块字符串。于是先让数据导出到文件(实在不知道怎么导出到内存)

command = "mysql -u #{User} -p#{Pass} -N-e'select * from table' database > 233.txt"

User,Pass同上 –e后面是sql语句,其它的语句也可以。table为表名,database为数据库名,233.txt为导出的文件名。

   再从文件读入到内存

   ifFile.exist?("233.txt")

              File.open("233.txt","r") do |file|

                            whileline = file.gets

                                          str+= line.gsub(/[/s]/, '') #每行对其使用正则表达式去掉空格

                            end

              end

   end

   顺便mark一下正则表达式

一般规则

/a/匹配字符a。   

//?/匹配特殊字符?。特殊字符包括^, $, ? , ., /, /, [, ], {, }, (, ), +, *.   

.匹配任意字符,例如/a./匹配ab和ac。   

/[ab]c/匹配ac和bc,[]之间代表范围。例如:/[a-z]/ , /[a-zA-Z0-9]/。   

/[^a-zA-Z0-9]/匹配不在该范围内的字符串。   

/[/d]/代表任意数字

/[/w]/代表任意字母,数字或者_

/[/s]/代表空白字符,包括空格,TAB和换行。   

/[/D]/,/[/W]/,/[/S]/均为上述的否定情况。

高级规则

?代表0或1个字符。/Mrs?/.?/匹配"Mr","Mrs","Mr.","Mrs."。

*代表0或多个字符。/Hello*/匹配"Hello","HelloJack"。

+代表1或多个字符。/a+c/匹配:"abc","abbdrec"等等。

/d{3}/匹配3个数字。

/d{1,10}/匹配1-10个数字。

/d{3,}/匹配3个数字以上。

/([A-Z]/d){5}/匹配首位是大写字母,后面4个是数字的字符串。

4. 计算md5

require 'digest/md5'

checksum = Digest::MD5.hexdigest(str)

 

最后,ruby用来写快速处理数据还是很方便的,一旦有需要进行调试的时候就显得不方便,在去掉string的空格包括换行后数据输出依然有换行,计算结果还暂时不能对比不知道是否结果包含换行。也可能是我使用的方式不对……

智能AI问答
PHP中文网智能助手能迅速回答你的编程问题,提供实时的代码和解决方案,帮助你解决各种难题。不仅如此,它还能提供编程资源和学习指导,帮助你快速提升编程技能。无论你是初学者还是专业人士,AI智能助手都能成为你的可靠助手,助力你在编程领域取得更大的成就。
来源:php中文网
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
最新问题
关于CSS思维导图的课件在哪? 课件
凡人来自于2024-04-16 10:10:18
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送
PHP中文网APP
随时随地碎片化学习
PHP中文网抖音号
发现有趣的

Copyright 2014-2024 //m.sbmmt.com/ All Rights Reserved | php.cn | 湘ICP备2023035733号