Иллюстрированный самоучитель по PostgreSQL

COPY

Копирование данных между файлами и таблицами.

Синтаксис:

COPY [ BINARY ] таблица [ WITH OIDS ]
FROM { 'файл' | stdin }
[ [ USING ] DELIMITERS 'разделитель' ]
[ WITH NULL AS ' строка _null' ] COPY [BINARY ] table [ WITH OIDS ]
TO { 'файл' | stdout }
[ [ USING ] DELIMITERS 'разделитель' ]
[ WITH NULL AS 'строка_null' ]

Параметры:

  • BINARY. Ключевое слово BINARY означает, что при сохранении и чтении данных командой COPY должен использоваться внутренний двоичный формат PostgreSQL (вместо текстового). При использовании двоичного формата ключевые слова WITH NULL и DELIMITERS неприменимы.
  • таблица. Имя существующей таблицы, в которую (или из которой) копируются данные.
  • FROM. Ключевое слово FROM означает, что команда COPY копирует данные из файла или стандартного ввода в таблицу.
  • ТO. Ключевое слово ТO означает, что команда COPY копирует данные из таблицы в файл или стандартный вывод.
  • WITH OIDS. Необязательный признак копирования идентификатора объекта (OID). Означает, что при выборке или вставке (в зависимости от разновидности команды, COPY FROM или COPY TO) записи сохраняют исходное значение OID.
  • файл. Абсолютный путь к файлу, используемому для ввода пли вывода (например, /usr/local/pgsql/data/employeetable).
  • stdin. Если вместо имени файла указано ключевое слово stdin, данные не загружаются из файла, а передаются клиентским приложением. Если ввод данных осуществляется в клиенте psql, то при вызове команды COPY FROM с ключевым словом stdin вам будет предложено ввести нужный текст.
  • stdout. Направление данных в стандартный вывод. Если вместо имени файла указано ключевое слово stdout, данные не направляются в файл, а передаются непосредственно клиентской программе (например, psql).
  • разделитель. Символ, разделяющий значения полей. При выполнении команды COPY FROM PostgreSQL предполагает, что этот символ разделяет значения полей во входных данных. При выполнении команды COPY TO символ разделяет значения полей в выходных данных. Если разделитель не задан, по умолчанию используется символ табуляции (\t). Разделитель должен состоять из одного символа. Если заданное значение состоит из нескольких символов, PostgreSQL использует только первый символ.
  • строка_null. Последовательность символов, идентифицирующая псевдозначение NULL. По умолчанию используется \N, но вы можете выбрать другое представление, в большей степени соответствующее вашим целям. При копировании данных в таблицу все строки, совпадающие с этой строкой, интерпретируются как NULL, поэтому очень важно, чтобы строковое представление NULL при импортировании и экспортировании данных совпадало и никогда не использовалось в других целях.

Результаты:

  • COPY. Сообщение выдается при успешном выполнении команды COPY.
  • NOTICE: ERROR. Ошибка – процедура копирования завершилась неудачей (с объяснением причины).

Описание

Команда COPY используется для обмена данных между таблицами баз PostgreSQL и файлами в файловой системе. Существует два варианта команды: COPY TO и COPY FROM.

Команда COPY TO направляет все содержимое таблицы в файл или в стандартный вывод (то есть клиенту, подключенному к базе данных). Команда COPY FROM импортирует данные из стандартного файла или из стандартного ввода (то есть от клиента).

Примечание
He путайте команду SQL COPY с командой psql \copy. Команда \copy выполняет операцию COPY FROM stdin или COPY TO stdout, при этом данные хранятся в файле, доступном для psql. Следовательно, права доступа к файлу определяются клиентом, а не серверным процессом postmaster
.

За дополнительной информацией об этой команде обращайтесь к разделу "Добавление данных командами INSERT и COPY" в главе 4.

Обмен данными может производиться как в виде простого текста, так и в двоичном формате (ключевое слово BINARY). Двоичный формат значительно ускоряет копирование данных, но вследствие низкоуровневых различий в порядке следования байтов ухудшается адаптируемость приложения.

Если Вы заметили ошибку, выделите, пожалуйста, необходимый текст и нажмите CTRL + Enter, чтобы сообщить об этом редактору.