---
metadata:
  - name: generator
    content: Diplodoc Platform v5.52.0
alternate:
  - https://ydb.tech/docs/en/reference/ydb-cli/topic-write.md?version=v25.4
  - https://ydb.tech/docs/ru/reference/ydb-cli/topic-write.md?version=v25.4
  - href: ru/reference/ydb-cli/topic-write.md
    type: text/markdown
    title: Markdown version
  - href: ../../llms.txt
    type: text/markdown
    title: llms.txt
sourcePath: ru/core/reference/ydb-cli/topic-write.md
---
> **Documentation Index:** Fetch the complete configuration index at https://ydb.tech/docs/ru/llms.txt

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

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

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

<!-- source: ru/reference/ydb-cli/commands/_includes/conn_options_ref.md -->
, где `[connection options]` — опции [соединения с БД](https://ydb.tech/docs/ru/reference/ydb-cli/connect.md?version=v25.4#command-line-pars)
<!-- endsource: ru/reference/ydb-cli/commands/_includes/conn_options_ref.md -->

## Параметры {#options}

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

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

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

`--format STR`: Формат потока входящих сообщений. Поддерживаемые форматы:

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

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

- Значение по умолчанию — `none`
- Возможные значения:

  `base64` — выполнить декодирование каждого сообщения из [Base64](https://ru.wikipedia.org/wiki/Base64) на входном потоке, записать результат декодирования в топик. Если декодирование не удалось, исполнение команды будет прервано с ошибкой.
  `none` — не выполнять преобразований, записать в топик содержимое сообщения из входного потока побайтово

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

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

## Примеры {#examples}

<!-- source: ru/_includes/ydb-cli-profile.md -->
{% note info %}

В примерах используется профиль `quickstart`, подробнее смотрите в [Создание профиля для соединения с тестовой БД](https://ydb.tech/docs/ru/reference/ydb-cli/profile/create.md?version=v25.4#quickstart).

{% endnote %}
<!-- endsource: ru/_includes/ydb-cli-profile.md -->

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

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

  ```bash
  ydb -p quickstart topic write topic1
  ```

* Запись содержимого бинарного файла `message.bin` в одно сообщение с использованием сжатия кодеком GZIP

  ```bash
  ydb -p quickstart topic write topic1 -f message.bin --codec GZIP
  ```

* Запись содержимого строкового файла `example.txt` с разделением на сообщения по строкам

  ```bash
  ydb -p quickstart topic write topic1 -f example.txt --format newline-delimited
  ```

* Запись скачивамого по протоколу HTTP ресурса с разделением на сообщения символами табуляции

  ```bash
  curl http://example.com/resource | ydb -p quickstart topic write topic1 --delimiter "\t"
  ```

* [Примеры интеграции команд YDB CLI](https://ydb.tech/docs/ru/reference/ydb-cli/topic-pipeline.md?version=v25.4)
