sqliteで削除したり抜粋したり。

とりあえずやってみた。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ファイルとか食わせると面倒くさいことになるからね。


トップ   編集 凍結 差分 履歴 添付 複製 名前変更 リロード   新規 一覧 検索 最終更新   ヘルプ   最終更新のRSS
Last-modified: 2016-11-16 (水) 17:20:55