Директории

База данных YDB поддерживает внутри иерархическую структуру директорий, в которых могут размещаться объекты БД.

YDB CLI поддерживает операции изменения структуры директорий, а также указание директории при обращении к объектам схемы.

Создание директории

Команда scheme mkdir создает директории:

ydb [connection options] scheme mkdir <path>

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

В параметре path указывается относительный путь создаваемой директории от корня директорий базы данных. Будут созданы все директории на этом пути, которые не существовали до момента вызова команды.

Если конечная директория на пути уже существовала, то выполнение команды завершится успешно (код результата 0) с выдачей предупреждения о том, что никаких изменений не было произведено:

Status: SUCCESS
Issues:
<main>: Error: dst path fail checks, path: /<database>/<path>: path exist, request accepts it,
pathId: [OwnerId: <some>, LocalPathId: <some>], path type: EPathTypeDir, path state: EPathStateNoChanges

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

Примеры:

  • Создание директории в корне базы данных

    ydb --profile quickstart scheme mkdir dir1
    
  • Создание директорий на указанном пути от корня базы данных

    ydb --profile quickstart scheme mkdir dir1/dir2/dir3
    

Удаление директории

Команда scheme rmdir удаляет директорию:

ydb [global options...] scheme rmdir [options...] <path>

Посмотрите описание команды для удаления директории:

ydb scheme rmdir --help

Параметры подкоманды

Имя Описание
-r, --recursive Рекурсивное удаление директории вместе с дочерними объектами (поддиректориями, таблицами, топиками). При указании этого параметра по умолчанию будет запрошено подтверждение.
-f, --force Не запрашивать никаких подтверждений.
-i Запрашивать подтверждение на удаление каждого объекта.
-I Однократно запросить подтверждение.
--timeout <значение> Таймаут операции, мс.

При попытке удалить непустую директорию без указания параметра -r или --recursive команда не будет выполнена с выдачей ошибки:

Status: SCHEME_ERROR
Issues:
<main>: Error: path table fail checks, path: /<database>/<path>: path has children, request
doesn't accept it, pathId: [OwnerId: <some>, LocalPathId: <some>], path type:
EPathTypeDir, path state: EPathStateNoChanges, alive children: <count>

Примеры

  • Удаление пустой директории:

    ydb scheme rmdir dir1
    
  • Удаление пустой директории с запросом подтверждения:

    ydb scheme rmdir -I dir1
    
  • Рекурсивное удаление непустой директории с запросом подтверждения:

    ydb scheme rmdir -r dir1
    
  • Рекурсивное удаление непустой директории без запроса подтверждения:

    ydb scheme rmdir -rf dir1
    
  • Рекурсивное удаление непустой директории с запросом подтверждения на каждый объект:

    ydb scheme rmdir -ri dir1
    

Использование директорий в других командах CLI

Во всех командах CLI, в которые передается параметром имя объекта, оно может быть указано с директорией, например в scheme describe:

ydb --profile quickstart scheme describe dir1/table_a

Команда scheme ls поддерживает передачу пути к директории в качестве параметра:

ydb --profile quickstart scheme ls dir1/dir2

Использование директорий в YQL

Имена объектов в запросах на языке YQL могут содержать путь к директории, где находится этот объект. Этот путь будет конкатенирован с базовым путем, задаваемым прагмой TablePathPrefix. Если прагма не указана, имя объекта разрешается относительно корня базы данных.

Неявное создание директорий при импорте

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