PostgreSQL 8.0.0 �����ĵ���PostgreSQL �й� ������ | ||||
---|---|---|---|---|
Prev | Fast Backward | Fast Forward | Next |
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������ͨ�������ڿͻ�ǰ�˺ͷ�����֮��������
�ִ������֣�������ģʽ���Σ���
��ѡ�Ĵ������ֶ��б����û�������ֶ��б���ô��ʹ�������ֶΡ�
���������ļ��ľ���·������
�������������Կͻ���Ӧ�á�
��������ǰ���ͻ���Ӧ�á�
ʹ�ö����Ƹ�ʽ�洢�Ͷ�ȡ�����������ı��ķ�ʽ�� �ڶ�����ģʽ�£��������� DELIMITERS��NULL ���� CSV ѡ�
����Ϊÿ�п����ڲ������ʶ��OID���� ���������Щû�� OID �ı������� OIDS ѡ����׳�һ������
�������ļ���ÿ���зָ������ֶεĵ����ַ��� ���ı�ģʽ�£�ȱʡ��ˮƽ�Ʊ����tab������ CSV ģʽ����һ�����š�
������ NULL ֵ���ִ������ı�ģʽ��ȱʡ�� \N ����б��-N���� �� CSV ģʽ����һ��û�����ŵĿ�ֵ�� ����㲻�����ֿ�ֵ�Ϳ��ִ�����ô��ʹ���ı�ģʽ�¿�����Ҳ����һ�����ִ���
ע��: ��ʹ�� COPY FROM ��ʱ���κ�ƥ������ִ����ִ������洢Ϊ NULL ֵ�� ������Ӧ��ȷ�����õ��ִ���COPY TO��ͬ��
���ŷָ�������CSV��ģʽ��
���� CSV ģʽ��������ַ���ȱʡ��˫���š�
������ CSV ģʽ��Ӧ�ó����������� QUOTE �ַ�ֵǰ����ַ��� ȱʡ�� QUOTE ֵ��ͨ����˫���ţ���
�� CSV COPY TO ģʽ�£�ǿ����ÿ���������ֶ���Χ�����з� NULL ֵ��ʹ�����Ű�Χ�� 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) |
\t | Tab (ASCII 9) |
\v | ��ֱ�Ʊ�� (ASCII 11) |
\digits | ��б�ܺ������һ�������˽���������ʾASCIIֵΪ�������ַ� |
���Բ�Ҫ�ѷ�б�ܷ���һ�������ַ�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 ���ݻ��ƣ� ������ʹ�� 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���ʶ��λ��Ŀǰֻ������һ����־λ���������ı������㣺
���Ϊ 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 ��ʾ�ɿա�
��������Ӱ�һ���������ͻ��ˣ� ʹ����ֱ����|����Ϊ��ָ�����
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' ]