Ruby で自家製スクリプトを書く 06

FasterCSV に初期設定を行うように修正を行う

#!/bin/env ruby
$KCODE='utf8'

require 'kconv'
require 'rubygems'
require 'fastercsv'

csv = 'sample.csv'
# CSV ファイルの文字コード
input_char_encoding  = 'Shift-JIS'
# SQL 文を保存するファイルの文字コード
output_char_encoding = 'UTF-8'
# フィールドの区切り文字
column_separeter = ", "
# フィールドの囲み文字
quote_character = '"'
# 1行目にフィールド文字があるかどうか
header = false

def convert_char_encoding(encoding, data)
  begin
    case encoding
      when 'jis'
        return Kconv.tojis(data)
      when 'Shfit-JIS'
        return Kconv.tosjis(data)
      when 'EUC-JP'
        return Kconv.toeuc(data)
      when 'UTF-8'
        return Kconv.toutf8(data)
      else
        exit(1)
    end
  rescue SystemExit => e
    p 'set invalid charcter encoding or nil.'
    exit(0)
  end
end

FasterCSV.foreach(csv, {:col_sep => column_separeter, :quote_char => quote_character, :headers => header}) do |row|
  p row #=> 配列の構成
  row.each do |column|
    # 三項式のままだと boolean が返されるようになったので、
    # if で分岐させる
    if (input_char_encoding == output_char_encoding)
      p column #=> 要素の構成
    else
      p convert_char_encoding(output_char_encoding, column) #=> 要素の構成
    end
  end
end