# File lib/taps/utils.rb, line 41
  def format_data(data, opts={})
    return {} if data.size == 0
    string_columns = opts[:string_columns] || []
    schema = opts[:schema] || []
    table  = opts[:table]

    max_lengths = schema.inject({}) do |hash, (column, meta)|
      if meta[:db_type] =~ /^varchar\((\d+)\)/
        hash.update(column => $1.to_i)
      end
      hash
    end

    header = data[0].keys
    only_data = data.collect do |row|
      row = blobs_to_string(row, string_columns)
      row.each do |column, data|
        if data.to_s.length > (max_lengths[column] || data.to_s.length)
          raise Taps::InvalidData.new("Detected data that exceeds the length limitation of its column. This is\ngenerally due to the fact that SQLite does not enforce length restrictions.\n\nTable  : \#{table}\nColumn : \#{column}\nType   : \#{schema.detect{|s| s.first == column}.last[:db_type]}\nData   : \#{data}\n")
        end
      end
      header.collect { |h| row[h] }
    end
    { :header => header, :data => only_data }
  end