Запись в топик

Командой topic write выполняется запись сообщений в топик из файла или stdin:

ydb [connection options] topic write <topic-path> \
  [--file STR] [--format STR] [--transform STR] \
  [дополнительные параметры...] 

, где [connection options] — опции соединения с БД

Параметры

Основные параметры

<topic-path> : Путь топика, единственный обязательный параметр

--file VAL (-f VAL): Читать поток входящих сообщений для записи в топик из указанного файла. Если не указан -- чтение производится из stdin.

--format STR: Формат потока входящих сообщений

  • Поддерживаемые форматы

    Имя Описание
    single-message
    (по умолчанию)
    Все содержимого потока на входе рассматривается как одно сообщение для записи в топик
    newline-delimited Поток на входе содержит множество сообщений, разделенных символом перевода строки 0x0A

--transform VAL: Метод преобразования сообщений

  • Значение по умолчанию — none
  • Возможные значения:
    base64 — выполнить декодирование каждого сообщения из Base64 на входном потоке, записать результат декодирования в топик. Если декодирование не удалось, исполнение команды будет прервано с ошибкой.
    none — не выполнять преобразований, записать в топик содержимое сообщения из входного потока побайтово

Дополнительные параметры

Имя Описание
--delimiter STR Байт-разделитель. Поток на входе разделяется на сообщения указанным байтом. Может быть задан только в случае, если не указан --format. Задается в виде экранированной строки.
--message-group-id STR Строковой идентификатор группы сообщений. Если не указан, то все сгенерированные из входного потока сообщения получат одинаковое значение идентификатора, представляющее собой шестнадцатеричное строковое представление случайного трехбайтового целого числа.
--codec STR Кодек, используемый для сжатия сообщений на клиенте перед отправкой на сервер. Возможные варианты: RAW (по умолчанию) - без сжатия, GZIP, ZSTD. Сжатие увеличивает затраты CPU на клиенте при записи и чтении сообщений, но обычно позволяет уменьшить объем передаваемых по сети и хранимых данных. При последующем чтении сообщений подписчиками они автоматически расжимаются использованным при записи кодеком, не требуя указания каких-либо специальных опций. Указанный кодек должен быть перечислен среди допустимых в параметрах топика.

Примеры

Примечание

В примерах используется профиль quickstart, подробнее смотрите в Создание профиля для соединения с тестовой БД.

Все примеры используют имя топика topic1.

  • Запись ввода с терминала в одно сообщение. После запуска команды можно ввести произвольный многострочный текст, завершив ввод нажатием Ctrl+D.

    ydb -p quickstart topic write topic1
    
  • Запись содержимого бинарного файла message.bin в одно сообщение с использованием сжатия кодеком GZIP

    ydb -p quickstart topic write topic1 -f message.bin --codec GZIP
    
  • Запись содержимого строкового файла example.txt с разделением на сообщения по строкам

    ydb -p quickstart topic write topic1 -f example.txt --format newline-delimited
    
  • Запись скачивамого по протоколу HTTP ресурса с разделением на сообщения символами табуляции

    curl http://example.com/resource | ydb -p quickstart topic write topic1 --delimiter "\t"
    
  • Примеры интеграции команд YDB CLI