Импорт данных
$ 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. - Если входные данные содержат поля, отсутствующие в целевом спейсе, эти поля игнорируются.
При импорте данных в шардированный кластер с включенным 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
Команда ниже импортирует объекты типа 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
Применимо к: tt crud import, tt tdg2 import
Тип аутентификации: chap-sha1, pap-sha256 или auto.
Применимо к: tt crud import, tt tdg2 import
Количество кортежей, передаваемых за один запрос. Значение по умолчанию:
100дляtt crud import.1дляtt tdg2 import. Подробнее см в разделе tt-import-tdg2.
Применимо к: tt import, tt crud import
Строка символов, определяющая десятичные разделители для числовых данных (по умолчанию .,).
Применимо к: tt import, tt crud import
Символ, определяющий разделитель значений полей. Для CSV разделителем по умолчанию является запятая (,).
Чтобы использовать символ табуляции в качестве разделителя, задайте значение tab:
$ tt crud import localhost:3301 customers.csv:customers \--delimiter tab
Имя файла, содержащего строки, которые не были импортированы (по умолчанию error).
См. также раздел Обработка ошибок парсинга.
Применимо к: tt tdg2 import
Автоматически подтверждать импорт в TDG2 с --batch-size больше единицы.
Формат входных данных.
Поддерживаемые форматы: csv.
Применимо к: tt import, tt crud import
Обрабатывать первую строку как заголовок, содержащий имена полей. В этом случае значения полей начинаются со второй строки.
См. также раздел Сопоставление полей входного файла и спейса.
Применимо к: tt crud import
Сохранять исходные значения поля bucket_id.
См. также раздел Импорт bucket_id в шардированные кластеры.
Имя файла журнала, содержащего информацию об ошибках импорта (по умолчанию import). Если файл журнала уже существует,
новые данные дописываются в этот файл.
Применимо к: tt import, tt crud import
Настройка сопоставления имен полей во входном файле и целевом спейсе.
См. также раздел Сопоставление полей входного файла и спейса.
Применимо к: tt import, tt crud import
Значение, интерпретируемое как null при импорте данных. По умолчанию пустое значение интерпретируется как null.
Например, кортеж, импортированный из строки: 1,477,Andrew,,38 должен выглядеть так: [1, 477, 'Andrew', null, 38].
Действие, выполняемое, если строку для импорта не удалось корректно разобрать. Возможные значения:
stop: остановить импорт данных.skip: пропустить строки, данные которых не удалось корректно разобрать.
Ошибки дублирования первичного ключа обрабатываются с помощью параметра --on-exist.
См. также раздел Обработка ошибок парсинга.
Действие, выполняемое при возникновении ошибки дублирования первичного ключа. Возможные значения:
stop: остановить импорт данных.skip: пропустить существующие значения при импорте.replace: заменить существующие значения при импорте.
Другие ошибки обрабатываются с помощью параметра --on-error.
Подробнее см. в разделе Обработка ошибок дублирования первичного ключа.
Пароль для подключения к экземпляру.
Имя файла прогресса, в котором хранится следующая информация:
- Позиции строк, которые не были импортированы при последнем запуске.
- Последняя позиция, обработанная при последнем запуске.
Если файл с указанным именем существует, он учитывается при импорте данных. tt import пытается вставить
строки, которые не были импортированы, а затем продолжает импорт с последней позиции.
При каждом запуске содержимое файла прогресса с указанным именем перезаписывается. Если файл с указанным именем не существует, файл прогресса создается с результатами текущего запуска.
Применимо к: tt import, tt crud import
Символ, определяющий кавычки. Для CSV по умолчанию используются двойные кавычки ("). Удвоенный символ
этого параметра действует как экранирующий символ во входных данных.
Применимо к: tt crud import
Определяет, приводит ли ошибка операции на хранилище к откату пакетного импорта на этом хранилище.
Применимо к: tt crud import, tt tdg2 import
Путь к файлу доверенных центров сертификации (CA) для зашифрованных соединений.
См. также раздел Зашифрованное соединение.
Применимо к: tt crud import, tt tdg2 import
Путь к файлу SSL-сертификата для зашифрованных соединений.
См. также раздел Зашифрованное соединение.
Применимо к: tt crud import, tt tdg2 import
Список наборов шифров SSL для зашифрованных соединений, разделенный двоеточиями (:).
См. также раздел Зашифрованное соединение.
Применимо к: tt crud import, tt tdg2 import
Путь к файлу закрытого SSL-ключа для зашифрованных соединений.
См. также раздел Зашифрованное соединение.
Применимо к: tt crud import, tt tdg2 import
Пароль к файлу SSL-ключа для зашифрованных соединений.
См. также раздел Зашифрованное соединение.
Применимо к: tt crud import, tt tdg2 import
Файл со списком паролей к файлу SSL-ключа для зашифрованных соединений.
См. также раздел Аутентификация.
Имя файла со строками, которые были импортированы (по умолчанию success). Перезаписывает файл, если он уже существует.
Применимо к: tt import, tt crud import
Строка символов, определяющая разделители тысяч для числовых данных. Значение по умолчанию
включает пробел и обратный апостроф ```. Это означает,
что 1 000 000 и 1\`000\`000 оба импортируются как ``1000000\.
Применимо к: tt tdg2 import
Токен приложения для подключения к TDG2.
Использовать SSL без указания дополнительных SSL-параметров.
См. также раздел Зашифрованное соединение.
Имя пользователя для подключения к экземпляру.