在公司工做中不可避免的須要洗數據、校驗數據。這個時候會發現會腳本真的酷斃了。看着公司的大牛用的是Ruby就試着用了下。並記錄以下:java
第一 安裝mysql
首先簡單介紹下安裝吧:git
使用rvm(Ruby Version Manager一款很是好用的ruby版本管理以及安裝工具)你會發現Ruby安裝真的是It's so earygithub
(1)安裝rvm:sql
網上說的安裝命令是curl -L get.rvm.io | bash -s stable數據庫
可是發現不行,正確命令是ruby
curl -k https://raw.github.com/wayneeseguin/rvm/master/binscripts/rvm-installer | bash -s stable
好了。默默的等着他安裝rvm吧。安裝好rvm其實就基本上就KO了。下面安裝Ruby吧!bash
(2)安裝rubyssh
查看已有的ruby版本:rvm list knowncurl
安裝一個指定版本:rvm install 2.2.1
使用指定版本並設置爲默認:rvm use 2.2.1 --default
查詢已經安裝的ruby: rvm list
卸載一個已安裝版本: rvm remove 1.9.2
在使用rvm安裝Ruby時會自動給咱們安裝上一個叫RubyGems(簡稱 gems)的東東。它用於對 Ruby組件進行打包的 Ruby打包系統。 可是 必須支出的是我國的特殊狀況,在使用gems可能超時須要咱們修改鏡像
(3)修改鏡像
使用命令gem source --add 'http://ruby.taobao.org/' 修改爲淘寶的鏡像。
gem source -l 命令查看鏡像
更詳細的請看:http://ruby.taobao.org/
好了至此安裝完成了。
第二 經過ssh鏈接mysql
我本覺得能夠開啓我Ruby的神之旅時被卡住了卡死了。由於公司對線上的機器所有采用的是跳板機。鏈接時連不上啊。網上找教程各類坑啊。都是一份代碼反覆複製唉!讓咱們這些菜鳥怎麼學習啊!!!我要在本地(A)經過跳板機(B)鏈接數據庫機器(C)。怎麼玩都玩不轉啊。我閉關苦思冥想了幾天仍是無法解決。神同樣的Ruby之旅難道就次卡住.....NO今每天一道紫色閃電劃過天空。我懂了...記錄以下
(1)安裝各類插件(我是這麼理解的)
使用gem命令安裝插件:在 https://rubygems.org/ 上搜索你想要的插件
想鏈接mysql至少得安裝mysql鏈接插件吧:
gem install mysql2
固然這樣的前提是你安裝了mysql並配置好了環境。若是你本身本地沒有安轉好。我只能說若是成功純屬巧合。
想要進過跳板機只是得安裝net-ssh-gateway吧
gem install net-ssh-gateway
(2)敲代碼吧
新建一個.rb的文件寫吧:
# encoding: utf-8 require 'rubygems' require 'mysql2' require 'net/ssh/gateway' begin puts "Initializing Ruby Program" puts "Initializing ssh" @gateway = Net::SSH::Gateway.new( 'HostB', 'User', :password => '********', :port => '22' ) @port = @gateway.open('HostC',3306,3307)#注意3306是你數據庫的端口號至於3307是隨便選的,只要沒被佔用 if @gateway.active? puts "ssh success connect" end puts "Initializing mysql" @client = Mysql2::Client.new( host:'127.0.0.1',#注意這裏是本地不用改的。我就是改了這兒才被坑的啊 username:'root', password:'mysqlpassword', database:'DB', port:@port ) puts "connected mysql" res = @client.query("SELECT * FROM T_XXXXX") puts "The count #{res.count}個" puts "The fields of the res:#{res.fields}" puts "The each row:" i=0; res.each do |row| i+=1 puts "第#{i}行#{row}" end puts "close mysql" @client.close puts "free ssh" @gateway.close(@port) @gateway.shutdown! puts "Terminating Ruby Program" end
注意HostB:跳板機的host;HostC:數據庫的host。
至此終於能夠開始我之後寫Ruby腳本的裝B模式啦......