Перейти к основному содержимому

Заполнение таблицы строками

примечание

Эта страница переведена при помощи нейросети GigaChat.

Оператор INSERT используется для добавления строк в таблицу:

INSERT INTO weather VALUES ('San Francisco', 46, 50, 0.25, '1994-11-27');

Все типы данных используют интуитивные форматы ввода. Константы, которые не являются простыми числовыми значениями, обычно должны заключаться в одиночные кавычки ('), как показано в примере. Тип date поддерживает разные форматы ввода, но в учебных примерах используется единый формат, приведенный выше.

Для типа point требуется пара координат:

INSERT INTO cities VALUES ('San Francisco', '(-194.0, 53.0)');

Использованный синтаксис подразумевает запоминание порядка следования столбцов. В качестве альтернативы можно перечислить имена столбцов явно:

INSERT INTO weather (city, temp_lo, temp_hi, prcp, date)
VALUES ('San Francisco', 43, 57, 0.0, '1994-11-29');

Столбцы можно указывать в другом порядке или опускать некоторые из них, если данные отсутствуют. Например, если нет информации об осадках:

INSERT INTO weather (date, city, temp_hi, temp_lo)
VALUES ('1994-11-29', 'Hayward', 54, 37);

Явное перечисление столбцов считается более надежным, чем использование позиции значений в списке.

Для дальнейших примеров стоит ввести все команды выше, чтобы таблицы содержали данные.

Для загрузки больших объемов данных из текстовых файлов используется команда COPY. Она работает быстрее, чем INSERT, так как оптимизирована для пакетной загрузки и предоставляет меньше возможностей для гибкой обработки данных:

COPY weather FROM '/home/user/weather.txt';

Файл должен быть доступен на сервере, где выполняется процесс backend, поскольку считывание выполняется напрямую этим процессом, а не клиентом. Данные, вставленные выше в таблицу погоды, также могут быть вставлены из файла, содержащего (значения разделены символом табуляции):

San Francisco    46    50    0.25    1994-11-27
San Francisco 43 57 0.0 1994-11-29
Hayward 37 54 \N 1994-11-29

Подробнее о команде смотрите в разделе COPY.