Следующий пример копирует таблицу клиенту,
используя вертикальную черту (|) в качестве разделителя полей:
COPY country TO STDOUT (DELIMITER '|');
Чтобы скопировать данные из файла в таблицу country:
COPY country FROM '/usr1/proj/bray/sql/country_data';
Чтобы скопировать в файл только страны, названия которых начинаются с 'A':
COPY (SELECT * FROM country WHERE country_name LIKE 'A%') TO '/usr1/proj/bray/sql/a_list_countries.copy';
Чтобы скопировать в сжатый файл, вы можете передать вывод через внешнюю программу сжатия:
COPY country TO PROGRAM 'gzip > /usr1/proj/bray/sql/country_data.gz';
Вот пример данных, подходящих для копирования в таблицу из
STDIN:
AF AFGHANISTAN AL ALBANIA DZ ALGERIA ZM ZAMBIA ZW ZIMBABWE
Обратите внимание, что пробел в каждой строке на самом деле является символом табуляции.
Ниже приведены те же данные, выведенные в двоичном формате.
Данные показаны после фильтрации через
утилиту Unix od -c. Таблица имеет три столбца;
первый имеет тип char(2), второй — text,
третий — integer. Во всех строках значение в третьем столбце равно NULL.
0000000 P G C O P Y \n 377 \r \n \0 \0 \0 \0 \0 \0 0000020 \0 \0 \0 \0 003 \0 \0 \0 002 A F \0 \0 \0 013 A 0000040 F G H A N I S T A N 377 377 377 377 \0 003 0000060 \0 \0 \0 002 A L \0 \0 \0 007 A L B A N I 0000100 A 377 377 377 377 \0 003 \0 \0 \0 002 D Z \0 \0 \0 0000120 007 A L G E R I A 377 377 377 377 \0 003 \0 \0 0000140 \0 002 Z M \0 \0 \0 006 Z A M B I A 377 377 0000160 377 377 \0 003 \0 \0 \0 002 Z W \0 \0 \0 \b Z I 0000200 M B A B W E 377 377 377 377 377 377
В стандарте SQL нет оператора COPY.
Следующий синтаксис использовался до версии Digital Q.DataBase 9.0 и до сих пор поддерживается:
COPYtable_name[ (column_name[, ...] ) ] FROM { 'filename' | STDIN } [ [ WITH ] [ BINARY ] [ DELIMITER [ AS ] 'delimiter_character' ] [ NULL [ AS ] 'null_string' ] [ CSV [ HEADER ] [ QUOTE [ AS ] 'quote_character' ] [ ESCAPE [ AS ] 'escape_character' ] [ FORCE NOT NULLcolumn_name[, ...] ] ] ] COPY {table_name[ (column_name[, ...] ) ] | (query) } TO { 'filename' | STDOUT } [ [ WITH ] [ BINARY ] [ DELIMITER [ AS ] 'delimiter_character' ] [ NULL [ AS ] 'null_string' ] [ CSV [ HEADER ] [ QUOTE [ AS ] 'quote_character' ] [ ESCAPE [ AS ] 'escape_character' ] [ FORCE QUOTE {column_name[, ...] | * } ] ] ]
Обратите внимание, что в этом синтаксисе BINARY и CSV
рассматриваются как независимые ключевые слова, а не как аргументы опции FORMAT.
Следующий синтаксис использовался до версии Digital Q.DataBase 7.3 и до сих пор поддерживается:
COPY [ BINARY ]table_nameFROM { 'filename' | STDIN } [ [USING] DELIMITERS 'delimiter_character' ] [ WITH NULL AS 'null_string' ] COPY [ BINARY ]table_nameTO { 'filename' | STDOUT } [ [USING] DELIMITERS 'delimiter_character' ] [ WITH NULL AS 'null_string' ]