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

Импорт данных

$ tt [crud|tdg2] import URI FILE:SPACE [IMPORT_OPTION ...]# или$ tt [crud|tdg2] import URI :SPACE < FILE [IMPORT_OPTION ...]

Команда tt [crud|tdg2] import выполняет импорт данных из файла в спейс. Три команды импорта охватывают следующие сценарии:

  • tt import импортирует данные в набор реплик через мастер-экземпляр с использованием API box.space.
  • tt crud import импортирует данные в шардированный кластер через роутер с использованием модуля CRUD.
  • tt tdg2 import импортирует данные в кластер Tarantool Data Grid 2 через его роутер с использованием функции repository.put из TDG2 Repository API.

Команда tt [crud|tdg2] import принимает следующие аргументы:

  • URI: URI экземпляра-роутера, если используется crud. В остальных случаях должен указывать URI хранилища.
  • FILE: Имя файла с данными для импорта.
  • SPACE: Имя спейса, в который импортируются данные.

Формат входного файла

Команда tt import поддерживает импорт данных в следующих форматах:

  • tt import и tt crud import: CSV;
  • tt tdg2 import: JSON lines.

Ограничения

Импорт не поддерживается для типа поля interval.

Сопоставление полей входного файла и спейса

Автоматическое сопоставление

Предположим, что есть файл customers.csv с заголовком, содержащим имена полей в первой строке:

id,firstname,lastname,age1,Andrew,Fuller,382,Michael,Suyama,463,Robert,King,33# ...

Если целевой спейс customers содержит поля с такими же именами, можно импортировать данные, указав параметры --header и --match следующим образом:

$ tt crud import localhost:3301 customers.csv:customers \                 --header \                 --match=header

В этом случае поля во входном файле и целевом спейсе сопоставляются автоматически. Также можно сопоставить поля вручную, если имена полей во входном файле и целевом спейсе различаются. При импорте данных в кластер указывать поле bucket_id не требуется - модуль CRUD генерирует значения bucket_id автоматически.

Ручное сопоставление

С помощью параметра --match можно импортировать данные с ручным сопоставлением имен полей во входном файле и целевом спейсе. Предположим, что есть файл customers.csv с четырьмя полями:

customer_id,name,surname,customer_age1,Andrew,Fuller,382,Michael,Suyama,463,Robert,King,33# ...

Если целевой спейс customers содержит поля id, firstname, lastname и age, сопоставление можно настроить следующим образом:

$ tt crud import localhost:3301 customers.csv:customers \                 --header \                 --match "id=customer_id;firstname=name;lastname=surname;age=customer_age"

Аналогично можно настроить сопоставление, используя числовые позиции полей во входном файле:

$ tt crud import localhost:3301 customers.csv:customers \                 --header \                 --match "id=1;firstname=2;lastname=3;age=4"

Ниже приведены правила для случаев, когда некоторые поля отсутствуют во входных данных или в спейсе:

  • Если в спейсе есть поля, не указанные во входных данных, tt [crud] import пытается вставить значения null.
  • Если входные данные содержат поля, отсутствующие в целевом спейсе, эти поля игнорируются.

Импорт bucket_id в шардированные кластеры

При импорте данных в шардированный кластер с включенным CRUD команда tt crud import игнорирует значения поля bucket_id из входного файла. Это позволяет CRUD автоматически управлять распределением данных в кластере, генерируя новые bucket_id для кортежей во время импорта.

Если необходимо сохранить исходные значения bucket_id, используйте параметр --keep-bucket-id:

$ tt crud import localhost:3301 customers.csv:customers \                 --keep-bucket-id \                 --header \                 --match=header

Обработка ошибок дублирования первичного ключа

С помощью параметра --on-exist можно управлять импортом данных при возникновении ошибки дублирования первичного ключа. В примере ниже существующие в спейсе значения заменяются новыми:

$ tt crud import localhost:3301 customers.csv:customers \                 --on-exist replace

Обработка ошибок парсинга

Чтобы пропустить строки с данными, которые не удалось корректно разобрать, используйте параметр --on-error следующим образом:

$ tt crud import localhost:3301 customers.csv:customers \                 --on-error skip

Импорт в Tarantool Data Grid 2

Команда ниже импортирует объекты типа customers в кластер TDG2. Объекты описаны в файле customers.jsonl.

$ tt tdg2 import localhost:3301 customers.jsonl:customers

Если в TDG2 включена аутентификация по токену, передайте токен приложения в параметре --token:

$ tt tdg2 import localhost:3301 customers.jsonl:customers \                 --token=2fc136cf-8cae-4655-a431-7c318967263d

Входной файл может выглядеть так:

{"age":30,"first_name":"Samantha","id":1,"second_name":"Carter"}{"age":41,"first_name":"Fay","id":2,"second_name":"Rivers"}{"age":74,"first_name":"Milo","id":4,"second_name":"Walters"}

При возникновении ошибки во время импорта в TDG2 команда tt tdg2 import откатывает изменения, сделанные в пределах текущего пакета, на хранилище, где произошла ошибка (поэтапный откат на уровне хранилища), и сообщает об ошибке. На других хранилищах объекты из того же пакета могут быть успешно импортированы. Таким образом, процесс отката tt tdg2 import аналогичен процессу tt crud import с параметром --rollback-on-error.

Поскольку пакеты объектов могут быть импортированы частично (откат на уровне хранилища), отсутствие точного сопоставления ошибок усложняет отладку. Чтобы минимизировать этот эффект, размер пакета по умолчанию (--batch-size) для tt tdg2 import равен 1. Это упрощает отладку: всегда известно, какой объект вызвал ошибку. С другой стороны, это снижает производительность по сравнению с импортом более крупными пакетами.

При увеличении размера пакета tt информирует о возможных проблемах и запрашивает явное подтверждение для продолжения. Чтобы автоматически подтвердить операцию пакетного импорта, добавьте параметр --force:

$ tt tdg2 import localhost:3301 customers.jsonl:customers \                 --batch-size=100 \                 --force

Аутентификация

При подключении к кластеру с включенной аутентификацией укажите учетные данные в параметрах --username и --password:

$ tt crud import localhost:3301 customers.csv:customers \                 --header --match=header \                 --username myuser --password p4$$w0rD

Зашифрованное соединение

Для подключения к экземплярам, использующим SSL-шифрование, укажите файлы SSL-сертификата и SSL-ключа в параметрах --sslcertfile и --sslkeyfile. При необходимости добавьте другие SSL-параметры в параметрах --ssl*.

$ tt crud import localhost:3301 customers.csv:customers \                 --header --match=header \                 --username myuser --password p4$$w0rD   \                 --auth pap-sha256 --sslcertfile certs/server.crt \                 --sslkeyfile certs/server.key

Для соединений, использующих SSL, но не требующих дополнительных параметров, добавьте параметр --use-ssl:

$ tt crud import localhost:3301 customers.csv:customers \                 --header --match=header \                 --username myuser --password p4$$w0rD   \                 --use-ssl

Параметры

--auth STRING

Применимо к: tt crud import, tt tdg2 import

Тип аутентификации: chap-sha1, pap-sha256 или auto.

--batch-size INT

Применимо к: tt crud import, tt tdg2 import

Количество кортежей, передаваемых за один запрос. Значение по умолчанию:

  • 100 для tt crud import.
  • 1 для tt tdg2 import. Подробнее см в разделе tt-import-tdg2.

--dec-sep STRING

Применимо к: tt import, tt crud import

Строка символов, определяющая десятичные разделители для числовых данных (по умолчанию .,).

--delimiter STRING

Применимо к: tt import, tt crud import

Символ, определяющий разделитель значений полей. Для CSV разделителем по умолчанию является запятая (,). Чтобы использовать символ табуляции в качестве разделителя, задайте значение tab:

$ tt crud import localhost:3301 customers.csv:customers \                 --delimiter tab

--error STRING

Имя файла, содержащего строки, которые не были импортированы (по умолчанию error).

См. также раздел Обработка ошибок парсинга.

--force

Применимо к: tt tdg2 import

Автоматически подтверждать импорт в TDG2 с --batch-size больше единицы.

--format STRING

Формат входных данных.

Поддерживаемые форматы: csv.

--header

Применимо к: tt import, tt crud import

Обрабатывать первую строку как заголовок, содержащий имена полей. В этом случае значения полей начинаются со второй строки.

См. также раздел Сопоставление полей входного файла и спейса.

--keep-bucket-id

Применимо к: tt crud import

Сохранять исходные значения поля bucket_id.

См. также раздел Импорт bucket_id в шардированные кластеры.

--log STRING

Имя файла журнала, содержащего информацию об ошибках импорта (по умолчанию import). Если файл журнала уже существует, новые данные дописываются в этот файл.

--match STRING

Применимо к: tt import, tt crud import

Настройка сопоставления имен полей во входном файле и целевом спейсе.

См. также раздел Сопоставление полей входного файла и спейса.

--null STRING

Применимо к: tt import, tt crud import

Значение, интерпретируемое как null при импорте данных. По умолчанию пустое значение интерпретируется как null. Например, кортеж, импортированный из строки: 1,477,Andrew,,38 должен выглядеть так: [1, 477, 'Andrew', null, 38].

--on-error STRING

Действие, выполняемое, если строку для импорта не удалось корректно разобрать. Возможные значения:

  • stop: остановить импорт данных.
  • skip: пропустить строки, данные которых не удалось корректно разобрать.

Ошибки дублирования первичного ключа обрабатываются с помощью параметра --on-exist.

См. также раздел Обработка ошибок парсинга.

--on-exist STRING

Действие, выполняемое при возникновении ошибки дублирования первичного ключа. Возможные значения:

  • stop: остановить импорт данных.
  • skip: пропустить существующие значения при импорте.
  • replace: заменить существующие значения при импорте.

Другие ошибки обрабатываются с помощью параметра --on-error.

Подробнее см. в разделе Обработка ошибок дублирования первичного ключа.

--password STRING

Пароль для подключения к экземпляру.

--progress STRING

Имя файла прогресса, в котором хранится следующая информация:

  • Позиции строк, которые не были импортированы при последнем запуске.
  • Последняя позиция, обработанная при последнем запуске.

Если файл с указанным именем существует, он учитывается при импорте данных. tt import пытается вставить строки, которые не были импортированы, а затем продолжает импорт с последней позиции.

При каждом запуске содержимое файла прогресса с указанным именем перезаписывается. Если файл с указанным именем не существует, файл прогресса создается с результатами текущего запуска.

--quote STRING

Применимо к: tt import, tt crud import

Символ, определяющий кавычки. Для CSV по умолчанию используются двойные кавычки ("). Удвоенный символ этого параметра действует как экранирующий символ во входных данных.

--rollback-on-error

Применимо к: tt crud import

Определяет, приводит ли ошибка операции на хранилище к откату пакетного импорта на этом хранилище.

--sslcafile STRING

Применимо к: tt crud import, tt tdg2 import

Путь к файлу доверенных центров сертификации (CA) для зашифрованных соединений.

См. также раздел Зашифрованное соединение.

--sslcertfile STRING

Применимо к: tt crud import, tt tdg2 import

Путь к файлу SSL-сертификата для зашифрованных соединений.

См. также раздел Зашифрованное соединение.

--sslciphersfile STRING

Применимо к: tt crud import, tt tdg2 import

Список наборов шифров SSL для зашифрованных соединений, разделенный двоеточиями (:).

См. также раздел Зашифрованное соединение.

--sslkeyfile STRING

Применимо к: tt crud import, tt tdg2 import

Путь к файлу закрытого SSL-ключа для зашифрованных соединений.

См. также раздел Зашифрованное соединение.

--sslpassword STRING

Применимо к: tt crud import, tt tdg2 import

Пароль к файлу SSL-ключа для зашифрованных соединений.

См. также раздел Зашифрованное соединение.

--sslpasswordfile STRING

Применимо к: tt crud import, tt tdg2 import

Файл со списком паролей к файлу SSL-ключа для зашифрованных соединений.

См. также раздел Аутентификация.

--success STRING

Имя файла со строками, которые были импортированы (по умолчанию success). Перезаписывает файл, если он уже существует.

--th-sep STRING

Применимо к: tt import, tt crud import

Строка символов, определяющая разделители тысяч для числовых данных. Значение по умолчанию включает пробел и обратный апостроф ```. Это означает, что 1 000 000 и 1\`000\`000 оба импортируются как ``1000000\.

--token STRING

Применимо к: tt tdg2 import

Токен приложения для подключения к TDG2.

--use-ssl STRING

Использовать SSL без указания дополнительных SSL-параметров.

См. также раздел Зашифрованное соединение.

--username STRING

Имя пользователя для подключения к экземпляру.