最新文章专题视频专题问答1问答10问答100问答1000问答2000关键字专题1关键字专题50关键字专题500关键字专题1500TAG最新视频文章推荐1 推荐3 推荐5 推荐7 推荐9 推荐11 推荐13 推荐15 推荐17 推荐19 推荐21 推荐23 推荐25 推荐27 推荐29 推荐31 推荐33 推荐35 推荐37视频文章20视频文章30视频文章40视频文章50视频文章60 视频文章70视频文章80视频文章90视频文章100视频文章120视频文章140 视频2关键字专题关键字专题tag2tag3文章专题文章专题2文章索引1文章索引2文章索引3文章索引4文章索引5123456789101112131415文章专题3
当前位置: 首页 - 科技 - 知识百科 - 正文

ruby小记_MySQL

来源:动视网 责编:小采 时间:2020-11-09 19:22:00
文档

ruby小记_MySQL

ruby小记_MySQL:Ruby 最近在用ruby处理一些数据,这里记下ruby使用时遇到的一些问题。功能:把更新好的sql文件导入到指定数据库,更新好后对比更新前后该表的md5值 1. 获取路径函数1获得当前执行文件的文件名:__FILE__2获得当前文件的目录File.dirname
推荐度:
导读ruby小记_MySQL:Ruby 最近在用ruby处理一些数据,这里记下ruby使用时遇到的一些问题。功能:把更新好的sql文件导入到指定数据库,更新好后对比更新前后该表的md5值 1. 获取路径函数1获得当前执行文件的文件名:__FILE__2获得当前文件的目录File.dirname


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< #{sqlList[0]}"

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的空格包括换行后数据输出依然有换行,计算结果还暂时不能对比不知道是否结果包含换行。也可能是我使用的方式不对……

文档

ruby小记_MySQL

ruby小记_MySQL:Ruby 最近在用ruby处理一些数据,这里记下ruby使用时遇到的一些问题。功能:把更新好的sql文件导入到指定数据库,更新好后对比更新前后该表的md5值 1. 获取路径函数1获得当前执行文件的文件名:__FILE__2获得当前文件的目录File.dirname
推荐度:
  • 热门焦点

最新推荐

猜你喜欢

热门推荐

专题
Top