Tarantool CE/EE Documentation portal logo
Помощь
Обновлена 15 сентября 2026 г. в 08:55

Модуль csv

Общие сведения

Модуль csv обрабатывает записи, форматированные в соответствии с правилами CSV (значения, разделенные запятыми).

По умолчанию, используются следующие правила форматирования:

  • Lua escape-последовательности, такие как \n или \10, допустимы внутри строк, но не внутри файлов,
  • запятые обозначают конец поля,
  • переводы строк или переводы строк плюс возвраты каретки обозначают конец записи,
  • начальные и конечные пробелы игнорируются,
  • кавычки могут окружать поля или части полей,
  • если поле окружено кавычками, запятые, переводы строк и пробелы считаются обычными символами, а пара кавычек "" считается одной кавычкой.

Параметры csv

Параметры, которые можно передать в функции модуля csv:

  • delimiter = {string} (по умолчанию: запятая) – однобайтовый символ, обозначающий конец поля
  • quote_char = {string} (по умолчанию: кавычка) – однобайтовый символ, обозначающий ограничитель строки
  • chunk_size = {number} (по умолчанию: 4096) – количество символов, читаемых за один раз (обычно для эффективности файлового ввода-вывода)
  • skip_head_lines = {number} (по умолчанию: 0) – количество строк, которые пропускаются в начале (обычно для заголовка)

Указатель

Ниже приведен перечень всех функций модуля csv.

Имя

Назначение

csv.load()

Загрузка CSV-файла

csv.dump()

Преобразование входного значения в строку в формате CSV

csv.iterate()

Итерация по записям CSV

csv.load(readable[, {options}])

Получение входного значения в формате CSV из readable и возврат таблицы в качестве выходного значения. Обычно readable представляет собой либо строку, либо открытый для чтения файл. Как правило, параметры {options} не указываются.

Параметры:

  • readable (object) — строка или любой объект с методом read(), отформатированный по правилам CSV
  • options (table) — см. выше

Возвращает

загруженное значение

Тип возвращаемого значения

table

Пример:

В читаемой строке 3 поля, поле №2 содержит запятую и пробел, поэтому следует использовать кавычки:

tarantool> csv = require('csv')---...tarantool> csv.load('a,"b,c ",d')---- - - a    - 'b,c '    - d...

В читаемой строке 2-байтный символ = Палочка в кириллице: (Отобразит палочку только в том случае, если кодировка = UTF-8.)

tarantool> csv.load('a\211\128b')---- - - a\211\128b...

Точка с запятой вместо запятой в виде символа разделителя:

tarantool> csv.load('a,b;c,d', {delimiter = ';'})---- - - a,b    - c,d...

Читаемый файл ./file.csv содержит две записи в формате CSV. Объяснение блока fio дается в разделе fio. Исходный CSV-файл и пример соответственно:

tarantool> -- входное значение в файле file.csv:         > -- a,"b,c ",d         > -- a\211\128btarantool> fio = require('fio')---...tarantool> f = fio.open('./file.csv', {'O_RDONLY'})---...tarantool> csv.load(f, {chunk_size = 4096})---- - - a    - 'b,c '    - d  - - a\211\128b...tarantool> f:close()---- true...

csv.dump(csv-table[, options, writable])

Получение входного значения из таблицы csv-table и возврат строки в формате CSV в качестве выходного значения. Или получение входного значения из таблицы csv-table и размещение выходного значения в writable. Обычно параметры {options} не указываются. Как правило, если указан writable, то это открытый для чтения файл. csv.dump() – это операция, обратная csv.load().

Параметры:

  • csv-table (table) — таблица, которую можно отформатировать по правилам CSV
  • options (table) — необязательный параметр. См. выше
  • writable (object) — любой объект с методом write()

Возвращает

выгруженное значение, которое записывается в writable, если он указан

Тип возвращаемого значения

string

Пример:

В таблице формата CSV 3 поля, поле №2 содержит "," поэтому результат включает в себя кавычки

tarantool> csv = require('csv')---...tarantool> csv.dump({'a','b,c ','d'})---- 'a,"b,c ",d'...

Круговое преобразование: из строки в таблицу и обратно в строку

tarantool> csv_table = csv.load('a,b,c')---...tarantool> csv.dump(csv_table)---- 'a,b,c'...

csv.iterate(input, {options})

Создание Lua-функции с итератором для прохода по записям в формате CSV по одному полю за раз. Настоятельно рекомендуется использовать итератор для большого объема данных (10 мегабайт и более).

Параметры:

  • input (object) — входное значение: строка, объект с методом read() или таблица
  • options (table) — см. выше

Возвращает

Lua-функция с итератором

Тип возвращаемого значения

function

Пример:

csv.iterate() — низкоуровневая функция для csv.load() и csv.dump(). Чтобы это показать, ниже приведена функция, которая работает так же, как csv.load(), — см. исходный код Tarantool.

tarantool> load = function(readable, opts)         >   opts = opts or {}         >   local result = {}         >   for i, tup in csv.iterate(readable, opts) do         >     result[i] = tup         >   end         >   return result         > end---...tarantool> load('a,b,c')---- - - a    - b    - c...