Інструменти для роботи з CSV файлом у Ruby

Ruby надає декілька бібліотек для роботи з CSV файлами, зокрема вбудовану бібліотеку CSV, яка є частиною стандартної бібліотеки Ruby. Нижче наведено приклади основних операцій з CSV файлами з використанням бібліотеки CSV.

Читання CSV файлу

Читання CSV файлу та обробка кожного рядка:

require 'csv'

CSV.foreach('file.csv', headers: true) do |row|
  puts row['ColumnName']
end

У цьому прикладі file.csv є ім’ям файлу, а headers: true вказує, що перший рядок файлу містить заголовки стовпців.

Запис у CSV файл

Запис даних у новий CSV файл:

require 'csv'

CSV.open('output.csv', 'w') do |csv|
  csv << ['Header1', 'Header2', 'Header3']
  csv << ['Row1Column1', 'Row1Column2', 'Row1Column3']
  csv << ['Row2Column1', 'Row2Column2', 'Row2Column3']
end

Читання CSV файлу в масив масивів

Якщо вам потрібно прочитати весь файл відразу в масив масивів, ви можете використовувати метод CSV.read:

require 'csv'

data = CSV.read('file.csv', headers: true)
data.each do |row|
  puts row['ColumnName']
end

Створення та робота з об’єктом CSV

Іноді зручніше працювати з об’єктом CSV, особливо якщо ви плануєте багато операцій над файлом:

require 'csv'

csv_text = File.read('file.csv')
csv = CSV.parse(csv_text, headers: true)

csv.each do |row|
  puts row['ColumnName']
end

Бібліотека FasterCSV

Хоча зараз ця бібліотека інтегрована в стандартну бібліотеку Ruby як CSV, історично вона була окремою і мала назву FasterCSV. У нових версіях Ruby немає потреби використовувати її окремо, але якщо ви працюєте з дуже старими версіями Ruby, може бути корисно знати про це.

require 'fastercsv'

FasterCSV.foreach('file.csv', headers: true) do |row|
  puts row['ColumnName']
end

Обробка великих файлів

Для обробки великих файлів рекомендується використовувати методи, які читають і обробляють файл рядок за рядком, щоб уникнути перевантаження пам’яті:

require 'csv'

CSV.foreach('large_file.csv', headers: true) do |row|
  # обробка рядка
end

Ці методи та приклади повинні допомогти вам ефективно працювати з CSV файлами у Ruby.

Метод .foreach з бібліотеки CSV в Ruby використовується для послідовного читання рядків з CSV файлу. Він відкриває файл, читає кожен рядок по черзі та передає його в заданий блок для обробки. Після завершення роботи з файлом, метод автоматично закриває його.

Приклад

require 'csv'

CSV.foreach('file.csv', headers: true) do |row|
  puts row['ColumnName']
end

Пояснення

  • CSV.foreach('file.csv', headers: true) — відкриває файл file.csv.
  • headers: true — вказує, що перший рядок файлу містить заголовки стовпців.
  • do |row| ... end — блок коду, який буде виконано для кожного рядка у файлі.
  • row['ColumnName'] — доступ до значення вказаного стовпця для поточного рядка.

Метод .foreach зручний для обробки великих файлів, оскільки він читає та обробляє файли рядок за рядком, зберігаючи пам’ять.