Учебно-практическое пособие москва 2017 ббк


COPY aircrafts_tmp FROM '/home/postgres/aircrafts.txt'



Pdf көрінісі
бет166/243
Дата21.07.2022
өлшемі3,05 Mb.
#147663
түріУчебно-практическое пособие
1   ...   162   163   164   165   166   167   168   169   ...   243
Байланысты:
Язык SQL. Базовый курс

COPY aircrafts_tmp FROM '/home/postgres/aircrafts.txt';
В результате будет выведено сообщение об успешном добавлении двух строк:
COPY 2
Давайте проверим, что получилось:
170


SELECT * FROM aircrafts_tmp;
Вы увидите, что новые строки были добавлены, но все те, что уже находились в таб-
лице, удалены не были.
При добавлении строк с помощью команды COPY выполняются проверки всех огра-
ничений, наложенных на таблицу, поэтому ввести дублирующие данные не получит-
ся.
Эту команду можно использовать и для вывода данных из таблицы в файл:
COPY aircrafts_tmp TO '/home/postgres/aircrafts_tmp.txt'
WITH ( FORMAT csv );
Предложение FORMAT csv говорит о том, что при выводе данных значения столбцов
разделяются запятыми (CSV — Comma Separated Values).
Получим файл такого вида:
773,Boeing 777-300,11100
763,Boeing 767-300,7900
SU9,Sukhoi SuperJet-100,3000
...
Если формат не указывать, то данные будут выведены с использованием символов
табуляции в качестве разделителей значений атрибутов.
7.2 Обновление строк в таблицах
Команда UPDATE предназначена для обновления данных в таблицах. Начнем с того,
что покажем, как и при изучении команды INSERT, как можно организовать запись
выполненных операций в журнальную таблицу. Эта команда аналогична команде,
уже рассмотренной в предыдущем разделе. В ней также «полезная» работа выполня-
ется в общем табличном выражении, а запись в журнальную таблицу — в основном
запросе.
WITH update_row AS
( UPDATE aircrafts_tmp
SET range = range * 1.2 WHERE model ~ '^Bom'
RETURNING *
)
INSERT INTO aircrafts_log
SELECT ur.aircraft_code, ur.model, ur.range,
CURRENT_TIMESTAMP, 'UPDATE'
FROM update_row ur;
Выполнив команду, в ответ получим сообщение
INSERT 0 1
171


Напомним, что выведенное сообщение относится непосредственно к внешнему за-
просу, в котором выполняется операция INSERT, добавляющая строку в журнальную
таблицу. Конечно, если бы строка в таблице aircrafts_tmp не была успешно обновле-
на, тогда предложение RETURNING * не возвратило бы внешнему запросу ни одной
строки, и, следовательно, тогда просто не было бы данных для формирования новой
строки в таблице aircrafts_log.
При использовании команды UPDATE в общем табличном выражении нужно учиты-
вать, что главный запрос может получить доступ к обновленным данным
только че-
рез временную таблицу
, которую формирует предложение RETURNING:


Достарыңызбен бөлісу:
1   ...   162   163   164   165   166   167   168   169   ...   243




©engime.org 2024
әкімшілігінің қараңыз

    Басты бет