とりあえずやってみた。sqliteにつながるならできるよね?と思ったら本当にできた。
まぁ、mysqlサーバ側のうんちくはどこにでもあるからRubyクライアント側だけ。
require 'mysql2' : : db2 = Mysql2::Client.new(:host => '192.168.1.*', :username => 'ユーザ名', :password => 'パスワード', :database => 'DB名')
ちなみに sqlite3だったら、こうするところね。
require 'sqlite3' : : db = SQLite3::Database.new("DBファイル名")
うん。接続するだけなら簡単かな。
データの取り込みについて。 ほぼsqlite3と変わらないかと思ったけど、ここだけ要注意かな。
s3 = [] db2.query("select yymmdd,date,title,url,source from #{db_name} ORDER BY yymmdd DESC").each{|row| s3.push(row) } db2.close
s3.each{|d| source = d["source"].__decode2 data = nil if source =~ /<html/ doc = Nokogiri.HTML(source).xpath("//html") begin data = doc[0].inner_html.testPP rescue data = "NG" end else data = source.clone end if data.length > 256 data = data[0..255] end print <<EOM #{d["date"]} #{d["yymmdd"]} #{d["title"]} #{d["url"]} #{data} EOM }
わかるかしら?
ruby-sqlite3で、db.execute(select文)で取り出したデータは配列なのよ。中身のテーブルもね。
だけど ruby-mysql2で、db.query(select文)で取り出したものは、全体はそりゃ配列だけど 個々のテーブルはハッシュ になっているの。ハッシュキーはテーブルで定義した名前そのものね。
これ、ちょっぴり要注意。
あと、 text型の扱いが全然違う のも気を付けて。同じつもりでXMLファイルとか食わせると面倒くさいことになるからね。