COPY

Name

COPY --  �ڱ���ļ�֮�俽������

Synopsis

COPY tablename [ ( column [, ...] ) ]
    FROM { 'filename' | STDIN }
    [ [ WITH ]
          [ BINARY ]
          [ OIDS ]
          [ DELIMITER [ AS ] 'delimiter' ]
          [ NULL [ AS ] 'null string' ]
          [ CSV [ QUOTE [ AS ] 'quote' ]
                [ ESCAPE [ AS ] 'escape' ]
                [ FORCE NOT NULL column [, ...] ]

COPY tablename [ ( column [, ...] ) ]
    TO { 'filename' | STDOUT }
    [ [ WITH ]
          [ BINARY ]
          [ OIDS ]
          [ DELIMITER [ AS ] 'delimiter' ]
          [ NULL [ AS ] 'null string' ]
          [ CSV [ QUOTE [ AS ] 'quote' ]
                [ ESCAPE [ AS ] 'escape' ]
                [ FORCE QUOTE column [, ...] ]
  

����

COPY �� PostgreSQL��ͱ�׼�ļ�ϵͳ�ļ�֮�佻�����ݡ� COPY TO ��һ������������ݶ�������һ���ļ��� �� COPY FROM ��һ���ļ��������ݵ�һ����������ݸ��ӵ������Ѿ����ڵ��������

���������һ���ֶ��б�COPY ��ֻ���ļ��ͱ�֮�俽���������ֶε����ݡ� ����������κβ����ֶ��б�����ֶΣ���ô COPY FROM ��Ϊ��Щ�ֶβ���ȱʡֵ��

���ļ����� COPY ָʾ PostgreSQL ������ֱ�Ӵ��ļ��ж�д���ݡ� ����������ļ�������ô���ļ�����Ϊ�������ɼ��������ļ�������ӷ������ĽǶ������������������ STDIN �� STDOUT������ͨ�������ڿͻ�ǰ�˺ͷ�����֮��������

����

tablename

�ִ������֣�������ģʽ���Σ���

column

��ѡ�Ĵ������ֶ��б����û�������ֶ��б���ô��ʹ�������ֶΡ�

filename

���������ļ��ľ���·������

STDIN

�������������Կͻ���Ӧ�á�

STDOUT

��������ǰ���ͻ���Ӧ�á�

BINARY

ʹ�ö����Ƹ�ʽ�洢�Ͷ�ȡ�����������ı��ķ�ʽ�� �ڶ�����ģʽ�£��������� DELIMITERS��NULL ���� CSV ѡ�

OIDS

����Ϊÿ�п����ڲ������ʶ��OID���� ���������Щû�� OID �ı������� OIDS ѡ����׳�һ�����󡣣�

delimiter

�������ļ���ÿ���зָ������ֶεĵ����ַ��� ���ı�ģʽ�£�ȱʡ��ˮƽ�Ʊ����tab������ CSV ģʽ����һ�����š�

null string

������ NULL ֵ���ִ������ı�ģʽ��ȱʡ�� \N ����б��-N���� �� CSV ģʽ����һ��û�����ŵĿ�ֵ�� ����㲻�����ֿ�ֵ�Ϳ��ִ�����ô��ʹ���ı�ģʽ�¿�����Ҳ����һ�����ִ���

ע��: ��ʹ�� COPY FROM ��ʱ���κ�ƥ������ִ����ִ������洢Ϊ NULL ֵ�� ������Ӧ��ȷ�����õ��ִ���COPY TO��ͬ��

CSV

�򿪶��ŷָ�������CSV��ģʽ��

quote

���� CSV ģʽ��������ַ���ȱʡ��˫���š�

escape

������ CSV ģʽ��Ӧ�ó����������� QUOTE �ַ�ֵǰ����ַ��� ȱʡ�� QUOTE ֵ��ͨ����˫���ţ���

FORCE QUOTE

�� CSV COPY TO ģʽ�£�ǿ����ÿ���������ֶ���Χ�����з� NULL ֵ��ʹ�����Ű�Χ�� NULL �Ӳ��ᱻ���Ű�Χ��

FORCE NOT NULL

�� CSV COPY FROM ģʽ�£���������ÿ���ֶζ��������������Ű�Χ������ ��˾�û�� NULL ֵ�������� CSV ģʽ�µ�ȱʡ���ִ���''���� ��������һ��ȱʧ����ֵ����һ���㳤�ִ����롣

ע��

COPY ֻ�����ڱ�����������ͼ��

BINARY �ؼ��ֽ�ǿ��ʹ�ö����ƶ���������ı��洢/��ȡ�������ݡ� ��������һ���̶��ϱȴ�ͳ�Ŀ�������죬�������ƿ����ļ��ڲ�ͬ������ϵ���ֲ�Բ��Ǻܺá�

����κ�ҪCOPY TO ���������ݱ�����ѡȡ���ݵ�Ȩ�ޣ����κ�Ҫ COPY FROM �����ݵı�����в���Ȩ�ޡ�

COPY ����������ļ��������ɷ�����ֱ�Ӷ���д���ļ����������ɿͻ���Ӧ�ö�д�� ��ˣ����DZ���λ�����ݿ�������ϻ��߿���Ϊ���ݿ�����������ʣ��������ɿͻ�������Щ���顣 ���DZ�����PostgreSQL�û������������е��û� ID�����Է��ʵ����ҿɶ����߿�д�������ǿͻ��ˡ� COPY ��һ�������ļ���ֻ�������ݿⳬ���û����еģ���Ϊ�������д�����������Ȩ�޷��ʵ��ļ���

��Ҫ���� COPY �� psql ָ�� \copy�� \copy ���� COPY FROM STDIN ���� COPY TO STDOUT�� Ȼ�������ץȡ/�洢��һ�� psql �ͻ��˿��Է��ʵ��ļ��С� ��ˣ�ʹ�� \copy ��ʱ���ļ�����Ȩ�����ɿͻ��˶����Ƿ������˾����ġ�

���ǽ����� COPY ����ļ���������ʹ�þ���·���� �� COPY TO ��ʱ�����ɷ�����ǿ�ƽ��еģ� ���Ƕ��� COPY FROM�����ȷ�д�һ������Ϊ���·�����ļ����ȡ��ѡ�� ��·��������Ϊ����ڷ������Ĺ���Ŀ¼��������Ŀ¼���ʲô�ط����������ǿͻ��˵Ĺ���Ŀ¼��

COPY FROM �ἤ�����д������ͼ��Լ�������������ἤ�����

COPY ���������DZ� DateStyle Ӱ��ġ� Ϊ�˺����� PostgreSQL ��װ��ֲ�������ǿ����õIJ���ȱʡ DateStyle ���ã��� ����Ӧ����ʹ�� COPY ǰ�� DateStyle ����Ϊ ISO��

COPY �ڵ�һ������ͣ��������Щ�� COPY TO�в�Ӧ�õ������⣬ ���� COPY FROM ʱĿ�ı���Ѿ����յ����ȵ��У� ��Щ�н����ɼ��򲻿ɷ��ʣ�������Ȼ��ռ�ݴ��̿ռ䡣 ����������ǿ����ܴ�һ�������ļ��Ļ��� ������������Щ�������ܻ�ռ���൱���һ���ִ��̿ռ䡣����Ե��� VACUUM ���ָ���Щ���̿ռ䡣

�ļ���ʽ

�ı���ʽ

������ BINARY ���� CSV ѡ��ʹ�� COPY ʱ�� ��д���ļ���һ���ı��ļ���ÿ�д������һ���С� ���е��У��ֶΣ��÷ָ����ֿ��� �ֶ�ֵ����������ÿ���ֶ�������ص�����������ɵ��ַ����� ���������뺯���ɽ��ܵ��ִ��� ������ʹ���ض��Ŀ�ֵ�ִ���ʾ��ЩΪ NULL ���ֶΡ� ��������ļ��������а�����Ԥ�ڶ�����ٵ��ֶΣ���ô COPY FROM ���׳�һ������ ��������� OIDS����ô OID ����Ϊ��һ���ֶζ�д�� ���������û��ֶ�ǰ�档

���ݵĽ���������һ��ֻ������б�ܺ;�㣨\.�����б�ʾ�� ������ļ��ж�ȡ���ݣ���ô���ݽ����ı���Dz���Ҫ�ģ� ��Ϊ�ļ�����������þͺܺ��ˣ������� 3.0 ֮ǰ�Ŀͻ���Э�������ڿͻ���Ӧ��֮�俽�����ݣ� ��ô����Ҫ�н�����ǡ�

��б���ַ���\���������� COPY �����Щ����������ַ��������ݣ�������Щ�ַ��ᱻ�����л����ֶηָ��������� �ر���������ַ�������ֶ�ֵ��һ����ʱ������ǰ׺һ����б�ܣ���б�ܱ������з����س����Լ���ǰ�ָ�����

�����Ŀ��ִ��� COPY TO �����κη�б�ܷ��ͣ���֮��ԣ�COPY FROM ��ɾ����б��֮ǰ��������������ִ��Ƚϡ���ˣ��� \N �����Ŀ��ִ������ʵ������ֵ \N ֮���������Ϊ���߻���ֳ� \\N����

COPY FROM ʶ���������ⷴб�����У�

����������
\b��� (ASCII 8)
\f��ֽ (ASCII 12)
\n���з� (ASCII 10)
\r�س� (ASCII 13)
\tTab (ASCII 9)
\v��ֱ�Ʊ�� (ASCII 11)
\digits��б�ܺ������һ�������˽���������ʾASCIIֵΪ�������ַ�

Ŀǰ��COPY TO �������ᷢ��һ���˽��Ʒ�б�����У� ��������ȷʹ���������г��������ַ����ڿ����ַ���

���Բ�Ҫ�ѷ�б�ܷ���һ�������ַ�N���߾�㣨.��ǰ�档 ��������Ͻ��ֱ�����Ϊ�ǿ��ִ��������ݽ�����ǡ� ����һ��û��������ı����г��ķ�б���ַ��������Լ���

����ǿ�ҽ������� COPY ���ݵ�Ӧ�ðѻ��з��ͻس��ֱ�ת���� \n �� \r ���С� Ŀǰ���ǿ�����һ����б�ܺ�һ���س���ʾһ�����ݻس����Լ���һ����б�ܺ�һ�����з���ʾһ�����ݻ��з��� �����������ı�ʾ�ڽ����İ汾��ȱʡʱ���ܲ��ᱻ���ܡ� ���ң�����ڲ�ͬ����֮�䴫�� COPY �ļ���Ҳ�Ƿdz����׳���� �������� Unix �� Windows ֮�䣩��

COPY TO ����ÿ�еĽ�β����һ�� Unix ���Ļ��з�("\n")�� �������� Microsoft Windows �����еķ��������ã�"\r\n"�����һ����ֹ����ֻ������COPY���������ļ�� Ϊ���ڲ�ͬƽ̨֮��һ�£�COPY TO STDOUT ���Ƿ��� "\n"�����ܷ�����ƽ̨��ʲô�� COPY FROM ���Դ�����Щ�Իس��������߻��з������߻س����з���Ϊ�н��������ݡ� Ϊ�˼����������г��ֵ�δ���ݵ����л��߻س����µĴ������������н�β����������Щ���ţ� COPY FROM �ᷢ�����档

CSV ��ʽ

�����ʽ���������������ŷָ���ֵ��CSV���ļ���ʽ�� �����������������ļ���ʽ��������ӱ������ģʽ�����ɲ�ʶ�𶺺ŷָ��� CSV ���ݻ��ƣ� ������ʹ�� PostgreSQL ��׼�ı�ģʽ�����ݡ�

ÿ����¼��ֵ������ DELIMITER �ַ��ָ��ġ� �����ֵ��������ָ��ַ���QUOTE �ַ���NULL �ִ��� һ���س������߽����ַ�����ô������ֵ�� QUOTE �ַ�ǰ׺�ͺ�׺����Χ���� ������ֵ���κ� QUOTE �ַ����� ESCAPE �ַ���ǰ�������ַ��� ��Ҳ����ʹ�� FORCE QUOTE ������� NULL ��ָ���ֶ�ֵʱǿ�����Ű�Χ��

CSV ��ʽû�б�׼�İ취����һ�� NULL ֵ��һ�����ִ��� PostgreSQL �� COPY ͨ�����Ű�Χ��������Щ�� һ������ NULL ����� NULL ֵ��û�����Ű�Χ�ģ� ��ƥ�� NULL �ִ�������ֵ�������Ű�Χ�ġ� ��ˣ�ʹ��ȱʡ����ʱ��һ�� NULL ��д��һ�������Ű�Χ�Ŀ��ִ��� ��һ�����ִ�д��˫���Ű�Χ��""������ȡ��ֵҲ��ѭ���ƵĹ��� �����ʹ�� FORCE NOT NULL ������Ϊ�ض��ֶν��� NULL �Ƚϡ�

ע��: CSV ģʽ����ʶ������ɴ������Ű�Χ�Ļس��ͽ��У�hang���� CVS �ļ��� �����Щ�ļ��������ı�ģʽ���ļ������ϸ��ÿ��������һ�С� ����������κ��ֶα����������ƥ�� CVS �ļ�����Ļ��з����У� ��ô PostgreSQL ��ܾ� COPY ���롣ͨ������������н����������ݵ�ʱ�����ı����߶����Ƹ�ʽ�� CSV ����ȫ��

ע��: ������������ֵIJ�����ʱ����ȷ�� CVS �ļ��� ��������ļ���ʽ����һ�ֹ��ø�ʽ��������һ�ֱ�׼�� ������������һЩ����ʹ���������������ļ����� COPY Ҳ��������һЩ���������ܴ�����ļ���

�����Ƹ�ʽ

��PostgreSQL 7.4 �е� COPY BINARY ���ļ���ʽ���˱仯���¸�ʽ��һ���ļ�ͷ��������Ԫ�飬 �Լ��ļ�β��ɡ��ļ�ͷ�����������������ֽ���

�ļ�ͷ

�ļ�ͷ�� 15 ���ֽڵĹ̶�����ɣ��������һ���䳤��ͷ��չ���� �̶����ǣ�

ǩ��

11-�ֽڵ����� "PGBCOPY\n\377\r\n\0" — ��ע���ֽ�����ǩ����Ҫ���һ���֡� ��ʹ�����ǩ����Ϊ���������ܹ������׿����ļ��Ƿ��Ѿ���һ���� 8 λ��ȫ��ת��������̣�ˡ� ���ǩ���ᱻ�н�βת����������ɾ���ֽ��㣬ɾ����λ��������ż�ĸı���ı䡣��

��־��

32 λ���������ʾ���ļ���ʽ����Ҫ���档 λ�Ǵ� 0��LSB���� 31 ��MSB������� — ��ע����������������ֽ���洢�ģ���λ��ǰ���� ��̵�����������ˡ�λ 16 - 31 �DZ��������ؼ��ļ���ʽ��Ϣ�ģ� ������߷���һ������ʶ��λ�����������Χ�ڣ���ô��Ӧ���˳��� λ 0-15 ������Ϊ��־�����ݵĸ�ʽʹ�ã����߿��Ժ��������Χ�ڵIJ���ʶ��λ��Ŀǰֻ������һ����־λ���������ı������㣺

Bit 16

���Ϊ 1����ô�������а����� OID�����Ϊ 0����û��

ͷ��չ��Χ����

32 λ���������ֽڼƵ�ͷʣ�೤�ȣ�����������Ŀǰ�������㣬 ���������һ��Ԫ�顣�Ըø�ʽ�ĸ�����޸Ķ��������������ݳ�����ͷ�С� ����Ӧ�ú����κ�����֪������δ����ͷ��չ���ݡ�

ͷ��չ������һ����������һ���Զ�����������п��õġ������־��������߶�����չ����������ʲô��ͷ��չ�ľ���������������Ժ�İ汾�á�

������ƾ��������¼���ͷ���ӣ�����ͷ��չ�飬�������õ�λ���־λ���Լ������¼����޸ģ����ø�λ��־λ�Ա�ʶ�������޸ģ� ���Ҹ�����Ҫ����չ��������֧�����ݣ���

Ԫ��

ÿ��Ԫ�鶼��һ�� 16 λ����������ͷ���ü�����Ԫ�����ֶε���Ŀ�� ��Ŀǰ����һ�������ÿ��Ԫ�鶼����ͬ�ļ����������ܲ�����Զ�������� Ȼ����治�ϳ���Ԫ���еĸ����ֶΣ��ֶ�����һ�� 32 λ�ij����֣����������ô�����ֶ����ݡ� �������ֲ��������Լ������ҿ���Ϊ�㡣��һ�������ǣ�-1 ��ʾһ�� NULL �ֶ�ֵ�� �� NULL ����£����治�������ֵ�ֽڡ�

��������֮��û�ж����������κ�������������ݡ�

Ŀǰ��һ�� COPY BINARY �ļ������������ֵ�������Ƕ����Ƹ�ʽ�ģ���ʽ����Ϊһ���� Ԥ�ƽ�������չ��������һ��ͷ������Ϊÿ���ֶ�������ʽ���롣

Ϊ���ж�ʵ��Ԫ�����ݵ���ȷ�Ķ����Ƹ�ʽ����Ӧ���Ķ� PostgreSQL Դ���룬 �ر��Ǹ��ֶ��������͵� *send �� *recv ���������͵ĺ���������Դ����� src/backend/utils/adt/ Ŀ¼�ҵ�����

������ļ��а����� OID����ô�� OID �����������ֶμ����ֺ��档 ����һ����ͨ���ֶΣ�ֻ������û�а������ֶμ������������������� --- �������������Dz��û�̫��ľ��Ϳ��Դ��� 4 �ֽں� 8 �ֽڵ� OID���������ij���һ����� OID �ǿ�ѡ�Ļ�����ô�����԰� OID ��ʾ�ɿա�

�ļ�β

�ļ�β���������� -1 ��һ�� 16 λ�����֡������ͺ�������һ��Ԫ���������������֡�

���һ��������ּȲ��� -1 Ҳ����Ԥ�ڵ��ֶε���Ŀ����ô����Ӧ�ñ��� �������ṩ�˶Զ�ʧ�����ݵ�ͬ���Ķ���ļ�顣

����

��������Ӱ�һ���������ͻ��ˣ� ʹ����ֱ����|����Ϊ��ָ�����

COPY country TO STDOUT WITH DELIMITER '|';

��һ�� Unix �ļ��п������ݵ�һ��country���У�

COPY country FROM '/usr1/proj/bray/sql/country_data';
  

������һ�����Դ� STDIN �п������ݵ����е����ӣ�

AF      AFGHANISTAN
AL      ALBANIA
DZ      ALGERIA
ZM      ZAMBIA
ZW      ZIMBABWE

��ע��������ÿ����Ŀհ�ʵ������һ��ˮƽ�Ʊ�� tab��

�������ͬ�������ݣ���һ̨ Linux/i586 �������Զ�������ʽ����� ��Щ�������� 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 ��䡣

PostgreSQL 7.3 ��ǰʹ��������﷨��������Ȼ֧�֣�

COPY [ BINARY ] tablename [ WITH OIDS ]
    FROM { 'filename' | STDIN }
    [ [USING] DELIMITERS 'delimiter' ]
    [ WITH NULL AS 'null string' ]

COPY [ BINARY ] tablename [ WITH OIDS ]
    TO { 'filename' | STDOUT }
    [ [USING] DELIMITERS 'delimiter' ]
    [ WITH NULL AS 'null string' ]