createdb - создать новую базу данных QHB

createdb - утилита, позволяющая создать новую базу данных.

Синтаксис

createdb [FLAGS] [OPTIONS] --host <host> [ARGS]

Описание

createdb - это "обёртка" надо SQL командой CREATE DATABASE. Нет разницы между созданием базы данных с помощью этой утилиты или же иным способом при обращении к серверу.

Если имя БД не указано, то используется имя пользователя, от которого выполняется программа, аналогичный алгоритм с владельцем БД.

Если БД невозможно создать, то программа выведет сообщение об ошибке, иногда предлагая решение проблемы.

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

Параметры

createdb принимает следующие аргументы командной строки:

FLAGS:

АргументОписание
--helpПоказать справку об аргументах командной строки и выйти
-w, --no-passwordНикогда не запрашивать ввод пароля
-W, --passwordПринудительно запрашивать пароль
-V, --versionРаспечатать версию createdb и выйти
-v, --verboseУстанавливает уровень ведения журнала в Debug [default: Info]

OPTIONS:

АргументОписание
-E, --encoding <encoding>Определяет схему кодировки символов, которая будет использоваться в этой базе данных
-h, --host <host>Указывает имя хоста или директорию сокета, на котором работает сервер [env: PGHOST=]
--lc-collate <lc-collate>Задает параметр LC_COLLATE, который будет использоваться в этой базе данных.
--lc-ctype <lc-ctype>Задает параметр LC_CTYPE, который будет использоваться в этой базе данных.
-l, --locale <locale>Определяет язык, который будет использоваться в этой базе данных.
--maintenance-db <m-dbname>Задает имя базы данных, к которой необходимо подключиться при создании новой базы данных.
-O, --owner <owner>Указывает пользователя базы данных, которому будет принадлежать новая база данных
-p, --port <port>Указывает порт TCP или расширение файла локального сокета домена Unix, на котором сервер прослушивает соединения. [default: 5432]
-D, --tablespace <tablespace>Задает табличное пространство по умолчанию для базы данных.
-T, --template <template>Определяет базу данных шаблонов, из которой можно построить эту базу данных.
-U, --username <username>Имя пользователя для подключения.

ARGS:

АргументОписание
dbnameОпределяет имя базы данных, которая будет создана. Имя должно быть уникальным среди всех баз данных QHB в этом кластере. По умолчанию создается база данных с тем же именем, что и текущий системный пользователь. [env: PGDATABASE=]
commentВвод комментария для базы данных.

Параметры -D, -l, -E, -O и -T соответствуют параметрам базовой команды SQL CREATE DATABASE; ознакомьтесь с соответствующим разделом документации для получения дополнительной информации.

Переменные Окружение

PGDATABASE

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

PGHOST

PGPORT

PGUSER

  • Параметры подключения по умолчанию. PGUSER также определяет имя базы данных для создания, если оно не указано в командной строке или PGDATABASE.

PG_COLOR

  • Указывает, использовать ли цвет в диагностических сообщениях. Возможные значения always, auto, never.

Диагностика

В случае затруднений см. CREATE DATABASE и qsql для обсуждения потенциальных проблем и сообщений об ошибках. Сервер базы данных должен работать на целевом хосте.

Примеры

Сценарии использования

$ createdb new

  • создаёт новую базу данных с именем "new"

$ createdb

  • создаёт новую базу данных с именем пользователя, от которого запущена программа

$ createdb new -l en_US.UTF-8 -T template0 --maintenance-db qhb

  • создаёт новую базу данных с именем "new", с локалью en_US.UTF-8, беря за основу базу template0, подключаясь к обслуживающей базе qhb`

$ createdb new "my comment" -l en_US -E LATIN1 -T template0 -v

  • создаёт новую базу данных с именем "new", настройками LC_COLLATE и LC_CTYPE - en_us, кодировкой LATIN1, беря за основу базу template0.
    После создания на базу накладывается комментарий "my comment".
    Флаг -v обеспечивает вывод отладочной информации:
    [DEBUG] Running getpwuid_r for user #1000
    [DEBUG] Loading user with uid 1000
    [DEBUG] executing statement batch: SELECT pg_catalog.set_config('search_path', '', false);
    [DEBUG] executing statement batch: CREATE DATABASE new2 ENCODING 'LATIN1' TEMPLATE template0 LC_COLLATE 'en_US' LC_CTYPE 'en_US';
    [DEBUG] executing statement batch: COMMENT ON DATABASE new2 IS 'my comment';
    [DEBUG] Database has been successfully created
    

Особенности использования

createdb new -l en_US.UTF-8 -T template0

и

createdb new -l en_US -E UTF-8 -T template0

  • не одно и то же. В первом случае БД успешно создастся, во втором варианте будет выведена ошибка.
[ERROR] db error: ERROR: encoding "UTF8" does not match locale "en_US": SQL: "CREATE DATABASE new3 ENCODING 'UTF-8' TEMPLATE template0 LC_COLLATE 'en_US' LC_CTYPE 'en_US';"
DETAIL: The chosen LC_CTYPE setting requires encoding "LATIN1".
  • Невозможно указать комментарий к базе данных, не указав её имя.

  • Флаг -l, --locale объединяет в себе --lc-collate и --lc-ctype - вместе их указать нельзя. Пример:

createdb new -l en_US = CREATE DATABASE new LC_COLLATE 'en_US' LC_CTYPE 'en_US';

createdb new4 --lc-collate en_US --lc-ctype en_US - ошибка

  • По умолчанию утилита пытается использовать template1 как обсуживающую БД (maintenance-db), если подключится к ней не выходит, то используется БД qhb.

-v, --verbose

  • помимо отладочной информации исполняет роль ECHO, выводя SQL-команды, отправленные на сервер для исполнения

Смотрите Также