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.