Hướng dẫn python postgresql copy command - lệnh sao chép postgresql trong python

Sao chép - Sao chép dữ liệu giữa một tệp và bảng

Tóm tắt

COPY table_name [ ( column_name [, ...] ) ]
    FROM { 'filename' | PROGRAM 'command' | STDIN }
    [ [ WITH ] ( option [, ...] ) ]
    [ WHERE condition ]

COPY { table_name [ ( column_name [, ...] ) ] | ( query ) }
    TO { 'filename' | PROGRAM 'command' | STDOUT }
    [ [ WITH ] ( option [, ...] ) ]

where option can be one of:

    FORMAT format_name
    FREEZE [ boolean ]
    DELIMITER 'delimiter_character'
    NULL 'null_string'
    HEADER [ boolean | MATCH ]
    QUOTE 'quote_character'
    ESCAPE 'escape_character'
    FORCE_QUOTE { ( column_name [, ...] ) | * }
    FORCE_NOT_NULL ( column_name [, ...] )
    FORCE_NULL ( column_name [, ...] )
    ENCODING 'encoding_name'

Sự mô tả

WHERE condition
1 di chuyển dữ liệu giữa các bảng PostgreSQL và các tệp hệ thống tệp tiêu chuẩn.
WHERE condition
2 sao chép nội dung của bảng vào tệp, trong khi
WHERE condition
3 sao chép dữ liệu từ tệp sang bảng (nối dữ liệu vào bất cứ điều gì trong bảng rồi).
WHERE condition
2 cũng có thể sao chép kết quả của truy vấn
WHERE condition
5.PostgreSQL tables and standard file-system files.
WHERE condition
2 copies the contents of a table to a file, while
WHERE condition
3 copies data from a file to a table (appending the data to whatever is in the table already).
WHERE condition
2 can also copy the results of a
WHERE condition
5 query.

Nếu một danh sách cột được chỉ định,

WHERE condition
2 chỉ sao chép dữ liệu trong các cột được chỉ định vào tệp. Đối với
WHERE condition
3, mỗi trường trong tệp được chèn, theo thứ tự, vào cột được chỉ định. Các cột bảng không được chỉ định trong danh sách cột
WHERE condition
3 sẽ nhận được các giá trị mặc định của chúng.

WHERE condition
1 với tên tệp hướng dẫn máy chủ PostgreSQL đọc trực tiếp từ hoặc ghi vào tệp. Tệp phải được truy cập bởi người dùng PostgreSQL (ID người dùng mà máy chủ chạy là) và tên phải được chỉ định từ quan điểm của máy chủ. Khi
COPY count
0 được chỉ định, máy chủ thực hiện lệnh đã cho và đọc từ đầu ra tiêu chuẩn của chương trình hoặc ghi vào đầu vào tiêu chuẩn của chương trình. Lệnh phải được chỉ định từ quan điểm của máy chủ và được người dùng PostgreSQL thực thi. Khi
COPY count
1 hoặc
COPY count
2 được chỉ định, dữ liệu được truyền qua kết nối giữa máy khách và máy chủ.PostgreSQL server to directly read from or write to a file. The file must be accessible by the PostgreSQL user (the user ID the server runs as) and the name must be specified from the viewpoint of the server. When
COPY count
0 is specified, the server executes the given command and reads from the standard output of the program, or writes to the standard input of the program. The command must be specified from the viewpoint of the server, and be executable by the PostgreSQL user. When
COPY count
1 or
COPY count
2 is specified, data is transmitted via the connection between the client and the server.

Mỗi phụ trợ chạy

WHERE condition
1 sẽ báo cáo tiến trình của nó trong chế độ xem
COPY count
4. Xem Phần & NBSP; 28.4.6 để biết chi tiết.

Thông số

COPY count
5

Tên (tùy chọn theo trình độ lược đồ) của một bảng hiện có.

COPY count
6

Một danh sách tùy chọn các cột sẽ được sao chép. Nếu không có danh sách cột nào được chỉ định, tất cả các cột của bảng ngoại trừ các cột được tạo sẽ được sao chép.

COPY count
7

A

WHERE condition
5,
COPY count
9,
COPY country TO STDOUT (DELIMITER '|');
0,
COPY country TO STDOUT (DELIMITER '|');
1 hoặc
COPY country TO STDOUT (DELIMITER '|');
2 có kết quả sẽ được sao chép. Lưu ý rằng dấu ngoặc đơn được yêu cầu xung quanh truy vấn.

Đối với các truy vấn

COPY country TO STDOUT (DELIMITER '|');
0,
COPY country TO STDOUT (DELIMITER '|');
1 và
COPY country TO STDOUT (DELIMITER '|');
2 phải được cung cấp một mệnh đề quay lại và mối quan hệ mục tiêu không phải có quy tắc có điều kiện, cũng như quy tắc
COPY country TO STDOUT (DELIMITER '|');
6, cũng như quy tắc
COPY country TO STDOUT (DELIMITER '|');
7 mở rộng sang nhiều câu lệnh.

COPY country TO STDOUT (DELIMITER '|');
8

Tên đường dẫn của tệp đầu vào hoặc đầu ra. Tên tệp đầu vào có thể là một đường dẫn tuyệt đối hoặc tương đối, nhưng tên tệp đầu ra phải là một đường dẫn tuyệt đối. Người dùng Windows có thể cần sử dụng chuỗi

COPY country TO STDOUT (DELIMITER '|');
9 và tăng gấp đôi bất kỳ dấu gạch chéo ngược nào được sử dụng trong tên đường dẫn.

COPY count
0

Một lệnh để thực thi. Trong

WHERE condition
3, đầu vào được đọc từ đầu ra tiêu chuẩn của lệnh và trong
WHERE condition
2, đầu ra được ghi vào đầu vào tiêu chuẩn của lệnh.

Lưu ý rằng lệnh được đưa ra bởi shell, vì vậy nếu bạn cần chuyển bất kỳ đối số nào cho lệnh shell xuất phát từ một nguồn không tin cậy, bạn phải cẩn thận để thoát khỏi bất kỳ ký tự đặc biệt nào có thể có ý nghĩa đặc biệt cho shell. Vì lý do bảo mật, tốt nhất là sử dụng chuỗi lệnh cố định hoặc ít nhất là tránh chuyển bất kỳ đầu vào người dùng nào trong đó.

COPY count
1

Chỉ định rằng đầu vào đến từ ứng dụng máy khách.

COPY count
2

Chỉ định rằng đầu ra đi đến ứng dụng máy khách.

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

Chỉ định xem tùy chọn đã chọn nên được bật hoặc tắt. Bạn có thể viết

COPY country FROM '/usr1/proj/bray/sql/country_data';
6,
COPY country FROM '/usr1/proj/bray/sql/country_data';
7 hoặc
COPY country FROM '/usr1/proj/bray/sql/country_data';
8 để kích hoạt tùy chọn và
COPY country FROM '/usr1/proj/bray/sql/country_data';
9,
COPY (SELECT * FROM country WHERE country_name LIKE 'A%') TO '/usr1/proj/bray/sql/a_list_countries.copy';
0 hoặc
COPY (SELECT * FROM country WHERE country_name LIKE 'A%') TO '/usr1/proj/bray/sql/a_list_countries.copy';
1 để vô hiệu hóa nó. Giá trị
COPY country FROM '/usr1/proj/bray/sql/country_data';
5 cũng có thể được bỏ qua, trong trường hợp đó
COPY country FROM '/usr1/proj/bray/sql/country_data';
6 được giả định.

COPY (SELECT * FROM country WHERE country_name LIKE 'A%') TO '/usr1/proj/bray/sql/a_list_countries.copy';
4

Chọn định dạng dữ liệu sẽ được đọc hoặc viết:

COPY (SELECT * FROM country WHERE country_name LIKE 'A%') TO '/usr1/proj/bray/sql/a_list_countries.copy';
5,
COPY (SELECT * FROM country WHERE country_name LIKE 'A%') TO '/usr1/proj/bray/sql/a_list_countries.copy';
6 (giá trị phân tách bằng dấu phẩy) hoặc
COPY (SELECT * FROM country WHERE country_name LIKE 'A%') TO '/usr1/proj/bray/sql/a_list_countries.copy';
7. Mặc định là
COPY (SELECT * FROM country WHERE country_name LIKE 'A%') TO '/usr1/proj/bray/sql/a_list_countries.copy';
5.

COPY (SELECT * FROM country WHERE country_name LIKE 'A%') TO '/usr1/proj/bray/sql/a_list_countries.copy';
9

Các yêu cầu sao chép dữ liệu với các hàng đã bị đóng băng, giống như chúng sẽ có sau khi chạy lệnh

COPY country TO PROGRAM 'gzip > /usr1/proj/bray/sql/country_data.gz';
0. Đây được dự định là một tùy chọn hiệu suất để tải dữ liệu ban đầu. Hàng sẽ chỉ bị đóng băng nếu bảng được tải đã được tạo hoặc cắt ngắn trong phép trừ hiện tại, không có con trỏ mở và không có ảnh chụp nhanh cũ nào được tổ chức bởi giao dịch này. Hiện tại không thể thực hiện
COPY country TO PROGRAM 'gzip > /usr1/proj/bray/sql/country_data.gz';
1 trên bảng được phân vùng.

Lưu ý rằng tất cả các phiên khác sẽ ngay lập tức có thể thấy dữ liệu sau khi được tải thành công. Điều này vi phạm các quy tắc bình thường của khả năng hiển thị MVCC và người dùng chỉ định nên nhận thức được các vấn đề tiềm ẩn mà điều này có thể gây ra.

COPY country TO PROGRAM 'gzip > /usr1/proj/bray/sql/country_data.gz';
2

Chỉ định ký tự phân tách các cột trong mỗi hàng (dòng) của tệp. Mặc định là một ký tự tab ở định dạng văn bản, một dấu phẩy ở định dạng

COPY country TO PROGRAM 'gzip > /usr1/proj/bray/sql/country_data.gz';
3. Đây phải là một nhân vật một byte duy nhất. Tùy chọn này không được phép khi sử dụng định dạng
COPY (SELECT * FROM country WHERE country_name LIKE 'A%') TO '/usr1/proj/bray/sql/a_list_countries.copy';
7.

COPY country TO PROGRAM 'gzip > /usr1/proj/bray/sql/country_data.gz';
5

Chỉ định chuỗi đại diện cho một giá trị null. Mặc định là

COPY country TO PROGRAM 'gzip > /usr1/proj/bray/sql/country_data.gz';
6 (Backslash-N) ở định dạng văn bản và một chuỗi trống chưa được trích xuất ở định dạng
COPY country TO PROGRAM 'gzip > /usr1/proj/bray/sql/country_data.gz';
3. Bạn có thể thích một chuỗi trống ngay cả ở định dạng văn bản cho các trường hợp bạn không muốn phân biệt null với các chuỗi trống. Tùy chọn này không được phép khi sử dụng định dạng
COPY (SELECT * FROM country WHERE country_name LIKE 'A%') TO '/usr1/proj/bray/sql/a_list_countries.copy';
7.

Ghi chú

Khi sử dụng

WHERE condition
3, bất kỳ mục dữ liệu nào khớp với chuỗi này sẽ được lưu trữ dưới dạng giá trị null, vì vậy bạn nên đảm bảo rằng bạn sử dụng cùng một chuỗi như bạn đã sử dụng với
WHERE condition
2.

AF      AFGHANISTAN
AL      ALBANIA
DZ      ALGERIA
ZM      ZAMBIA
ZW      ZIMBABWE
1

Chỉ định rằng tệp chứa một dòng tiêu đề với tên của mỗi cột trong tệp. Trên đầu ra, dòng đầu tiên chứa các tên cột từ bảng. Trên đầu vào, dòng đầu tiên bị loại bỏ khi tùy chọn này được đặt thành

AF      AFGHANISTAN
AL      ALBANIA
DZ      ALGERIA
ZM      ZAMBIA
ZW      ZIMBABWE
2 (hoặc giá trị boolean tương đương). Nếu tùy chọn này được đặt thành
AF      AFGHANISTAN
AL      ALBANIA
DZ      ALGERIA
ZM      ZAMBIA
ZW      ZIMBABWE
3, số và tên của các cột trong dòng tiêu đề phải khớp với tên cột thực tế của bảng, theo thứ tự; nếu không một lỗi được nêu ra. Tùy chọn này không được phép khi sử dụng định dạng
COPY (SELECT * FROM country WHERE country_name LIKE 'A%') TO '/usr1/proj/bray/sql/a_list_countries.copy';
7. Tùy chọn
AF      AFGHANISTAN
AL      ALBANIA
DZ      ALGERIA
ZM      ZAMBIA
ZW      ZIMBABWE
3 chỉ có giá trị cho các lệnh
WHERE condition
3.

AF      AFGHANISTAN
AL      ALBANIA
DZ      ALGERIA
ZM      ZAMBIA
ZW      ZIMBABWE
7

Chỉ định ký tự trích dẫn được sử dụng khi giá trị dữ liệu được trích dẫn. Mặc định là kép. Đây phải là một nhân vật một byte duy nhất. Tùy chọn này chỉ được phép khi sử dụng định dạng

COPY country TO PROGRAM 'gzip > /usr1/proj/bray/sql/country_data.gz';
3.

AF      AFGHANISTAN
AL      ALBANIA
DZ      ALGERIA
ZM      ZAMBIA
ZW      ZIMBABWE
9

Chỉ định ký tự sẽ xuất hiện trước một ký tự dữ liệu khớp với giá trị

AF      AFGHANISTAN
AL      ALBANIA
DZ      ALGERIA
ZM      ZAMBIA
ZW      ZIMBABWE
7. Mặc định giống như giá trị
AF      AFGHANISTAN
AL      ALBANIA
DZ      ALGERIA
ZM      ZAMBIA
ZW      ZIMBABWE
7 (do đó ký tự trích dẫn được nhân đôi nếu nó xuất hiện trong dữ liệu). Đây phải là một nhân vật một byte duy nhất. Tùy chọn này chỉ được phép khi sử dụng định dạng
COPY country TO PROGRAM 'gzip > /usr1/proj/bray/sql/country_data.gz';
3.

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
3

Các lực trích dẫn sẽ được sử dụng cho tất cả các giá trị không phải -____ ____ trong mỗi cột được chỉ định.

COPY country TO PROGRAM 'gzip > /usr1/proj/bray/sql/country_data.gz';
5 đầu ra không bao giờ được trích dẫn. Nếu
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
6 được chỉ định, các giá trị không-____ 65 sẽ được trích dẫn trong tất cả các cột. Tùy chọn này chỉ được phép trong
WHERE condition
2 và chỉ khi sử dụng định dạng
COPY country TO PROGRAM 'gzip > /usr1/proj/bray/sql/country_data.gz';
3.

COPY table_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 NULL column_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 [, ...] | * } ] ] ]
0

Không khớp với các giá trị của các cột được chỉ định so với chuỗi null. Trong trường hợp mặc định trong đó chuỗi null trống, điều này có nghĩa là các giá trị trống sẽ được đọc dưới dạng các chuỗi có độ dài bằng không thay vì null, ngay cả khi chúng không được trích dẫn. Tùy chọn này chỉ được phép trong

WHERE condition
3 và chỉ khi sử dụng định dạng
COPY country TO PROGRAM 'gzip > /usr1/proj/bray/sql/country_data.gz';
3.

COPY table_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 NULL column_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 [, ...] | * } ] ] ]
3

Khớp với các giá trị của các cột được chỉ định với chuỗi null, ngay cả khi nó đã được trích dẫn và nếu một trận đấu được tìm thấy, hãy đặt giá trị thành

COPY country TO PROGRAM 'gzip > /usr1/proj/bray/sql/country_data.gz';
5. Trong trường hợp mặc định trong đó chuỗi null trống, điều này chuyển đổi một chuỗi trống được trích dẫn thành null. Tùy chọn này chỉ được phép trong
WHERE condition
3 và chỉ khi sử dụng định dạng
COPY country TO PROGRAM 'gzip > /usr1/proj/bray/sql/country_data.gz';
3.

COPY table_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 NULL column_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 [, ...] | * } ] ] ]
7

Chỉ định rằng tệp được mã hóa trong

COPY table_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 NULL column_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 [, ...] | * } ] ] ]
8. Nếu tùy chọn này bị bỏ qua, mã hóa máy khách hiện tại được sử dụng. Xem các ghi chú dưới đây để biết thêm chi tiết.

COPY table_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 NULL column_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 [, ...] | * } ] ] ]
9

Điều khoản

COPY table_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 NULL column_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 [, ...] | * } ] ] ]
9 tùy chọn có biểu mẫu chung

WHERE condition

trong đó

WHERE condition
01 là bất kỳ biểu thức nào đánh giá là kết quả của loại
COPY country FROM '/usr1/proj/bray/sql/country_data';
5. Bất kỳ hàng nào không đáp ứng điều kiện này sẽ không được chèn vào bảng. Một hàng thỏa mãn điều kiện nếu nó trả về true khi các giá trị hàng thực tế được thay thế cho bất kỳ tham chiếu biến nào.

Hiện tại, các nhóm con không được phép trong các biểu thức

COPY table_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 NULL column_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 [, ...] | * } ] ] ]
9 và việc đánh giá không thấy bất kỳ thay đổi nào được thực hiện bởi chính
WHERE condition
1 (điều này quan trọng khi biểu thức chứa các cuộc gọi đến các chức năng ____105).

Đầu ra

Khi hoàn thành thành công, lệnh

WHERE condition
1 trả về thẻ lệnh của biểu mẫu

COPY count

WHERE condition
07 là số lượng hàng được sao chép.

Ghi chú

PSQL sẽ chỉ in thẻ lệnh này nếu lệnh không phải là

WHERE condition
08 hoặc lệnh PSQL meta tương đương
WHERE condition
09. Điều này là để ngăn chặn việc nhầm lẫn thẻ lệnh với dữ liệu vừa được in. will print this command tag only if the command was not
WHERE condition
08, or the equivalent psql meta-command
WHERE condition
09. This is to prevent confusing the command tag with the data that was just printed.

Ghi chú

WHERE condition
2 chỉ có thể được sử dụng với các bảng đơn giản, không phải khung nhìn và không sao chép các hàng từ bảng con hoặc phân vùng con. Ví dụ:
WHERE condition
11 để sao chép các hàng giống như
WHERE condition
12. Cú pháp
WHERE condition
13) có thể được sử dụng để đổ tất cả các hàng trong một hệ thống phân cấp kế thừa, bảng được phân vùng hoặc xem.

WHERE condition
3 có thể được sử dụng với các bảng đơn giản, nước ngoài hoặc phân vùng hoặc với các chế độ xem có kích hoạt
WHERE condition
15.

Bạn phải chọn đặc quyền trên bảng có giá trị được đọc bởi

WHERE condition
2 và chèn đặc quyền vào bảng vào đó các giá trị được chèn bởi
WHERE condition
3. Nó là đủ để có các đặc quyền cột trên (các) cột được liệt kê trong lệnh.

Nếu bảo mật cấp hàng được bật cho bảng, các chính sách

WHERE condition
5 có liên quan sẽ áp dụng cho
WHERE condition
11 cho các tuyên bố. Hiện tại,
WHERE condition
3 không được hỗ trợ cho các bảng có bảo mật cấp hàng. Thay vào đó, sử dụng các câu
COPY country TO STDOUT (DELIMITER '|');
0 tương đương.

Các tệp có tên trong lệnh

WHERE condition
1 được đọc hoặc ghi trực tiếp bởi máy chủ, không phải bởi ứng dụng máy khách. Do đó, họ phải cư trú hoặc có thể truy cập vào máy chủ cơ sở dữ liệu chứ không phải máy khách. Chúng phải có thể truy cập và có thể đọc được hoặc có thể ghi bởi người dùng PostgreSQL (ID người dùng mà máy chủ chạy như), không phải máy khách. Tương tự, lệnh được chỉ định với
COPY count
0 được thực hiện trực tiếp bởi máy chủ, không phải bởi ứng dụng máy khách, phải được thực thi bởi người dùng PostgreSQL.
WHERE condition
1 Đặt tên cho một tệp hoặc lệnh chỉ được phép cho các siêu người dùng hoặc người dùng được cấp một trong các vai trò
WHERE condition
25,
WHERE condition
26 hoặc
WHERE condition
27, vì nó cho phép đọc hoặc viết bất kỳ tệp nào hoặc chạy chương trình mà máy chủ có đặc quyền truy cập.PostgreSQL user (the user ID the server runs as), not the client. Similarly, the command specified with
COPY count
0 is executed directly by the server, not by the client application, must be executable by the PostgreSQL user.
WHERE condition
1 naming a file or command is only allowed to database superusers or users who are granted one of the roles
WHERE condition
25,
WHERE condition
26, or
WHERE condition
27, since it allows reading or writing any file or running a program that the server has privileges to access.

Đừng nhầm lẫn

WHERE condition
1 với lệnh PSQL
WHERE condition
29.
WHERE condition
29 gọi
WHERE condition
31 hoặc
WHERE condition
32, sau đó lấy/lưu trữ dữ liệu trong một tệp có thể truy cập vào máy khách PSQL. Do đó, khả năng truy cập tệp và quyền truy cập phụ thuộc vào máy khách thay vì máy chủ khi
WHERE condition
29 được sử dụng.psql instruction
WHERE condition
29.
WHERE condition
29 invokes
WHERE condition
31 or
WHERE condition
32, and then fetches/stores the data in a file accessible to the psql client. Thus, file accessibility and access rights depend on the client rather than the server when
WHERE condition
29 is used.

Nên khuyến cáo rằng tên tệp được sử dụng trong

WHERE condition
1 luôn được chỉ định là một đường dẫn tuyệt đối. Điều này được thực thi bởi máy chủ trong trường hợp
WHERE condition
2, nhưng đối với
WHERE condition
3, bạn có tùy chọn đọc từ một tệp được chỉ định bởi một đường dẫn tương đối. Đường dẫn sẽ được giải thích liên quan đến thư mục làm việc của quy trình máy chủ (thông thường thư mục dữ liệu của cụm), không phải thư mục làm việc của khách hàng.

Việc thực hiện một lệnh với

COPY count
0 có thể bị hạn chế bởi các cơ chế kiểm soát truy cập của hệ điều hành, chẳng hạn như Selinux.

WHERE condition
3 sẽ gọi mọi kích hoạt và kiểm tra các ràng buộc trên bảng đích. Tuy nhiên, nó sẽ không gọi các quy tắc.

Đối với các cột nhận dạng, lệnh

WHERE condition
3 sẽ luôn ghi các giá trị cột được cung cấp trong dữ liệu đầu vào, như tùy chọn
COPY country TO STDOUT (DELIMITER '|');
0
WHERE condition
41.

WHERE condition
1 Đầu vào và đầu ra bị ảnh hưởng bởi
WHERE condition
43. Để đảm bảo tính di động cho các cài đặt PostgreSQL khác có thể sử dụng cài đặt không mặc định
WHERE condition
43,
WHERE condition
43 phải được đặt thành
WHERE condition
46 trước khi sử dụng
WHERE condition
2. Đó cũng là một ý tưởng tốt để tránh bán dữ liệu với
WHERE condition
48 được đặt thành
WHERE condition
49, bởi vì các giá trị khoảng thời gian âm có thể bị hiểu sai bởi một máy chủ có cài đặt khác cho
WHERE condition
48.PostgreSQL installations that might use non-default
WHERE condition
43 settings,
WHERE condition
43 should be set to
WHERE condition
46 before using
WHERE condition
2. It is also a good idea to avoid dumping data with
WHERE condition
48 set to
WHERE condition
49, because negative interval values might be misinterpreted by a server that has a different setting for
WHERE condition
48.

Dữ liệu đầu vào được giải thích theo tùy chọn

COPY table_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 NULL column_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 [, ...] | * } ] ] ]
7 hoặc mã hóa máy khách hiện tại và dữ liệu đầu ra được mã hóa trong
COPY table_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 NULL column_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 [, ...] | * } ] ] ]
7 hoặc mã hóa máy khách hiện tại, ngay cả khi dữ liệu không truyền qua máy khách nhưng được đọc từ hoặc ghi vào tệp trực tiếp bởi máy chủ .

WHERE condition
1 dừng hoạt động ở lỗi đầu tiên. Điều này không nên dẫn đến các vấn đề trong trường hợp
WHERE condition
2, nhưng bảng đích sẽ nhận được các hàng trước đó trong
WHERE condition
3. Những hàng này sẽ không thể nhìn thấy hoặc có thể truy cập được, nhưng chúng vẫn chiếm không gian đĩa. Điều này có thể lên tới một lượng đáng kể không gian đĩa bị lãng phí nếu sự thất bại xảy ra tốt trong một hoạt động sao chép lớn. Bạn có thể muốn gọi
WHERE condition
56 để phục hồi không gian lãng phí.

COPY table_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 NULL column_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 [, ...] | * } ] ] ]
3 và
COPY table_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 NULL column_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 [, ...] | * } ] ] ]
0 có thể được sử dụng đồng thời trên cùng một cột. Điều này dẫn đến việc chuyển đổi các chuỗi null được trích dẫn thành các giá trị null và các chuỗi null chưa được trích xuất thành các chuỗi trống.

Định dạng tệp

Định dạng văn bản

Khi định dạng

COPY (SELECT * FROM country WHERE country_name LIKE 'A%') TO '/usr1/proj/bray/sql/a_list_countries.copy';
5 được sử dụng, dữ liệu đọc hoặc viết là một tệp văn bản có một dòng trên mỗi hàng. Các cột trong một hàng được phân tách bằng ký tự phân cách. Bản thân các giá trị cột là các chuỗi được tạo bởi hàm đầu ra hoặc được chấp nhận cho hàm đầu vào của mỗi loại dữ liệu của thuộc tính. Chuỗi null được chỉ định được sử dụng thay cho các cột là null.
WHERE condition
3 sẽ gây ra lỗi nếu bất kỳ dòng nào của tệp đầu vào chứa nhiều cột hơn hoặc ít hơn dự kiến.

Kết thúc dữ liệu có thể được biểu diễn bằng một dòng duy nhất chỉ có thời gian lùi lại (

WHERE condition
61). Một điểm đánh dấu cuối cùng là không cần thiết khi đọc từ một tệp, vì phần cuối của tệp phục vụ hoàn toàn tốt; Nó chỉ cần khi sao chép dữ liệu vào hoặc từ các ứng dụng máy khách bằng giao thức khách hàng trước-3.0.

Các ký tự Backslash (

WHERE condition
62) có thể được sử dụng trong dữ liệu
WHERE condition
1 để trích dẫn các ký tự dữ liệu có thể được coi là phân định hàng hoặc cột. Cụ thể, các ký tự sau phải được đi trước bởi một dấu gạch chéo ngược nếu chúng xuất hiện như một phần của giá trị cột: chính bản sao lại, dòng mới, trả về vận chuyển và ký tự phân cách hiện tại.must be preceded by a backslash if they appear as part of a column value: backslash itself, newline, carriage return, and the current delimiter character.

Chuỗi null được chỉ định được gửi bởi

WHERE condition
2 mà không cần thêm bất kỳ dấu gạch chéo ngược nào; Ngược lại,
WHERE condition
3 khớp với đầu vào so với chuỗi null trước khi xóa dấu gạch chéo ngược. Do đó, một chuỗi null như
COPY country TO PROGRAM 'gzip > /usr1/proj/bray/sql/country_data.gz';
6 không thể bị nhầm lẫn với giá trị dữ liệu thực tế
COPY country TO PROGRAM 'gzip > /usr1/proj/bray/sql/country_data.gz';
6 (sẽ được biểu thị là
WHERE condition
68).

Các chuỗi ngược đặc biệt sau đây được công nhận bởi

WHERE condition
3:

Sự phối hợpĐại diện
WHERE condition
70
Backspace (ASCII 8)
WHERE condition
71
Form Feed (ASCII 12)
WHERE condition
72
NEWLINE (ASCII 10)
WHERE condition
73
Trở về vận chuyển (ASCII 13)
WHERE condition
74
Tab (ASCII 9)
WHERE condition
75
Tab dọc (ASCII 11)
WHERE condition
62
WHERE condition
77
Backslash theo sau là một đến ba chữ số bát phân chỉ định byte với mã số đó
WHERE condition
78
WHERE condition
77
Backslash
WHERE condition
80 theo sau là một hoặc hai chữ số hex chỉ định byte với mã số đó

Hiện tại,

WHERE condition
2 sẽ không bao giờ phát ra chuỗi dấu gạch chéo ngược octal hoặc hex-chữ số, nhưng nó sử dụng các chuỗi khác được liệt kê ở trên cho các ký tự điều khiển đó.

Bất kỳ ký tự được đánh dấu ngược nào không được đề cập trong bảng trên sẽ được thực hiện để thể hiện chính nó. Tuy nhiên, hãy cẩn thận với việc thêm các dấu gạch chéo ngược một cách không cần thiết, vì điều đó có thể vô tình tạo ra một chuỗi phù hợp với điểm đánh dấu dữ liệu cuối (

WHERE condition
61) hoặc chuỗi null (theo mặc định). Các chuỗi này sẽ được công nhận trước khi bất kỳ xử lý ngược nào khác được thực hiện.

Chúng tôi khuyên bạn nên tạo dữ liệu

WHERE condition
1 chuyển đổi dữ liệu Newlines và vận chuyển trở lại chuỗi
WHERE condition
72 và
WHERE condition
73 tương ứng. Hiện tại, có thể thể hiện lợi nhuận vận chuyển dữ liệu bằng cách trả lại và trả lại vận chuyển, và thể hiện dữ liệu Newline bằng dấu gạch chéo ngược và dòng mới. Tuy nhiên, những đại diện này có thể không được chấp nhận trong các bản phát hành trong tương lai. Chúng cũng rất dễ bị tham nhũng nếu tệp
WHERE condition
1 được chuyển qua các máy khác nhau (ví dụ: từ UNIX sang Windows hoặc ngược lại).

Tất cả các chuỗi dấu gạch chéo ngược được giải thích sau khi chuyển đổi mã hóa. Các byte được chỉ định với các chuỗi dấu gạch chéo ngược octal và hex phải hình thành các ký tự hợp lệ trong mã hóa cơ sở dữ liệu.

WHERE condition
2 sẽ chấm dứt từng hàng với một dòng mới theo kiểu UNIX (____ ____172). Các máy chủ đang chạy trên Microsoft Windows thay vì trả về vận chuyển/dòng mới (____ ____ ____190), nhưng chỉ dành cho
WHERE condition
1 cho tệp máy chủ; Để thống nhất trên các nền tảng,
WHERE condition
32 luôn gửi cho ____ ____172, bất kể nền tảng máy chủ.
WHERE condition
3 có thể xử lý các dòng kết thúc bằng các đường mới, trả lại vận chuyển hoặc vận chuyển trở lại/đường mới. Để giảm nguy cơ lỗi do các đường ray mới hoặc lợi nhuận vận chuyển có nghĩa là dữ liệu,
WHERE condition
3 sẽ phàn nàn nếu các kết thúc dòng trong đầu vào không giống nhau.
WHERE condition
72
). Servers running on Microsoft Windows instead output carriage return/newline (
WHERE condition
90
), but only for
WHERE condition
1 to a server file; for consistency across platforms,
WHERE condition
32 always sends
WHERE condition
72
regardless of server platform.
WHERE condition
3 can handle lines ending with newlines, carriage returns, or carriage return/newlines. To reduce the risk of error due to un-backslashed newlines or carriage returns that were meant as data,
WHERE condition
3 will complain if the line endings in the input are not all alike.

Định dạng CSV

Tùy chọn định dạng này được sử dụng để nhập và xuất định dạng tệp giá trị phân tách bằng dấu phẩy (

COPY country TO PROGRAM 'gzip > /usr1/proj/bray/sql/country_data.gz';
3) được sử dụng bởi nhiều chương trình khác, chẳng hạn như bảng tính. Thay vì các quy tắc thoát ra được sử dụng bởi định dạng văn bản tiêu chuẩn của PostgreSQL, nó tạo ra và nhận ra cơ chế thoát CSV thông thường.PostgreSQL's standard text format, it produces and recognizes the common CSV escaping mechanism.

Các giá trị trong mỗi bản ghi được phân tách bằng ký tự

COPY country TO PROGRAM 'gzip > /usr1/proj/bray/sql/country_data.gz';
2. Nếu giá trị chứa ký tự dấu phân cách, ký tự
AF      AFGHANISTAN
AL      ALBANIA
DZ      ALGERIA
ZM      ZAMBIA
ZW      ZIMBABWE
7, chuỗi
COPY country TO PROGRAM 'gzip > /usr1/proj/bray/sql/country_data.gz';
5, trả về vận chuyển hoặc ký tự nguồn cấp đường, thì toàn bộ giá trị được tiền tố và bị hậu tố bởi ký tự
AF      AFGHANISTAN
AL      ALBANIA
DZ      ALGERIA
ZM      ZAMBIA
ZW      ZIMBABWE
7 và bất kỳ sự xuất hiện nào trong giá trị của ký tự
AF      AFGHANISTAN
AL      ALBANIA
DZ      ALGERIA
ZM      ZAMBIA
ZW      ZIMBABWE
7 hoặc Nhân vật
AF      AFGHANISTAN
AL      ALBANIA
DZ      ALGERIA
ZM      ZAMBIA
ZW      ZIMBABWE
9 được đi trước bởi nhân vật thoát. Bạn cũng có thể sử dụng
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
3 để buộc báo giá khi xuất ra các giá trị không -____ ____ 65 trong các cột cụ thể.

Định dạng

COPY country TO PROGRAM 'gzip > /usr1/proj/bray/sql/country_data.gz';
3 không có cách tiêu chuẩn để phân biệt giá trị
COPY country TO PROGRAM 'gzip > /usr1/proj/bray/sql/country_data.gz';
5 với một chuỗi trống.
WHERE condition
1 của PostgreSQL xử lý điều này bằng cách trích dẫn. A
COPY country TO PROGRAM 'gzip > /usr1/proj/bray/sql/country_data.gz';
5 là đầu ra dưới dạng chuỗi tham số
COPY country TO PROGRAM 'gzip > /usr1/proj/bray/sql/country_data.gz';
5 và không được trích dẫn, trong khi giá trị không phải là không phù hợp với chuỗi tham số
COPY country TO PROGRAM 'gzip > /usr1/proj/bray/sql/country_data.gz';
5 được trích dẫn. Ví dụ: với các cài đặt mặc định,
COPY country TO PROGRAM 'gzip > /usr1/proj/bray/sql/country_data.gz';
5 được viết dưới dạng chuỗi trống chưa được trích xuất, trong khi một giá trị dữ liệu chuỗi trống được viết bằng dấu ngoặc kép (
COPY count
13). Đọc giá trị tuân theo các quy tắc tương tự. Bạn có thể sử dụng
COPY table_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 NULL column_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 [, ...] | * } ] ] ]
0 để ngăn chặn so sánh đầu vào
COPY country TO PROGRAM 'gzip > /usr1/proj/bray/sql/country_data.gz';
5 cho các cột cụ thể. Bạn cũng có thể sử dụng
COPY table_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 NULL column_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 [, ...] | * } ] ] ]
3 để chuyển đổi giá trị dữ liệu chuỗi NULL được trích dẫn thành
COPY country TO PROGRAM 'gzip > /usr1/proj/bray/sql/country_data.gz';
5.PostgreSQL's
WHERE condition
1 handles this by quoting. A
COPY country TO PROGRAM 'gzip > /usr1/proj/bray/sql/country_data.gz';
5 is output as the
COPY country TO PROGRAM 'gzip > /usr1/proj/bray/sql/country_data.gz';
5 parameter string and is not quoted, while a non-
COPY country TO PROGRAM 'gzip > /usr1/proj/bray/sql/country_data.gz';
5 value matching the
COPY country TO PROGRAM 'gzip > /usr1/proj/bray/sql/country_data.gz';
5 parameter string is quoted. For example, with the default settings, a
COPY country TO PROGRAM 'gzip > /usr1/proj/bray/sql/country_data.gz';
5 is written as an unquoted empty string, while an empty string data value is written with double quotes (
COPY count
13). Reading values follows similar rules. You can use
COPY table_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 NULL column_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 [, ...] | * } ] ] ]
0 to prevent
COPY country TO PROGRAM 'gzip > /usr1/proj/bray/sql/country_data.gz';
5 input comparisons for specific columns. You can also use
COPY table_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 NULL column_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 [, ...] | * } ] ] ]
3 to convert quoted null string data values to
COPY country TO PROGRAM 'gzip > /usr1/proj/bray/sql/country_data.gz';
5.

Bởi vì Backslash không phải là một ký tự đặc biệt ở định dạng

COPY country TO PROGRAM 'gzip > /usr1/proj/bray/sql/country_data.gz';
3,
WHERE condition
61, điểm đánh dấu cuối cùng, cũng có thể xuất hiện dưới dạng giá trị dữ liệu. Để tránh bất kỳ giải thích sai nào, giá trị dữ liệu
WHERE condition
61 xuất hiện dưới dạng mục nhập đơn độc trên một dòng được tự động trích dẫn trên đầu ra và trên đầu vào, nếu được trích dẫn, không được hiểu là điểm đánh dấu cuối cùng. Nếu bạn đang tải một tệp được tạo bởi một ứng dụng khác có một cột chưa được trích xuất và có thể có giá trị
WHERE condition
61, bạn có thể cần báo giá đó trong tệp đầu vào.

Ghi chú

Trong định dạng

COPY country TO PROGRAM 'gzip > /usr1/proj/bray/sql/country_data.gz';
3, tất cả các ký tự đều có ý nghĩa. Một giá trị được trích dẫn được bao quanh bởi không gian trắng, hoặc bất kỳ ký tự nào khác ngoài
COPY country TO PROGRAM 'gzip > /usr1/proj/bray/sql/country_data.gz';
2, sẽ bao gồm các ký tự đó. Điều này có thể gây ra lỗi nếu bạn nhập dữ liệu từ một hệ thống đệm các dòng
COPY country TO PROGRAM 'gzip > /usr1/proj/bray/sql/country_data.gz';
3 với khoảng trắng ra một số chiều rộng cố định. Nếu tình huống như vậy phát sinh, bạn có thể cần phải xử lý trước tệp
COPY country TO PROGRAM 'gzip > /usr1/proj/bray/sql/country_data.gz';
3 để xóa không gian trắng kéo dài, trước khi nhập dữ liệu vào PostgreSQL.PostgreSQL.

Ghi chú

Trong định dạng

COPY country TO PROGRAM 'gzip > /usr1/proj/bray/sql/country_data.gz';
3, tất cả các ký tự đều có ý nghĩa. Một giá trị được trích dẫn được bao quanh bởi không gian trắng, hoặc bất kỳ ký tự nào khác ngoài
COPY country TO PROGRAM 'gzip > /usr1/proj/bray/sql/country_data.gz';
2, sẽ bao gồm các ký tự đó. Điều này có thể gây ra lỗi nếu bạn nhập dữ liệu từ một hệ thống đệm các dòng
COPY country TO PROGRAM 'gzip > /usr1/proj/bray/sql/country_data.gz';
3 với khoảng trắng ra một số chiều rộng cố định. Nếu tình huống như vậy phát sinh, bạn có thể cần phải xử lý trước tệp
COPY country TO PROGRAM 'gzip > /usr1/proj/bray/sql/country_data.gz';
3 để xóa không gian trắng kéo dài, trước khi nhập dữ liệu vào PostgreSQL.

Ghi chú

Trong định dạng

COPY country TO PROGRAM 'gzip > /usr1/proj/bray/sql/country_data.gz';
3, tất cả các ký tự đều có ý nghĩa. Một giá trị được trích dẫn được bao quanh bởi không gian trắng, hoặc bất kỳ ký tự nào khác ngoài
COPY country TO PROGRAM 'gzip > /usr1/proj/bray/sql/country_data.gz';
2, sẽ bao gồm các ký tự đó. Điều này có thể gây ra lỗi nếu bạn nhập dữ liệu từ một hệ thống đệm các dòng
COPY country TO PROGRAM 'gzip > /usr1/proj/bray/sql/country_data.gz';
3 với khoảng trắng ra một số chiều rộng cố định. Nếu tình huống như vậy phát sinh, bạn có thể cần phải xử lý trước tệp
COPY country TO PROGRAM 'gzip > /usr1/proj/bray/sql/country_data.gz';
3 để xóa không gian trắng kéo dài, trước khi nhập dữ liệu vào PostgreSQL.

Định dạng nhị phân

Tùy chọn định dạng

COPY (SELECT * FROM country WHERE country_name LIKE 'A%') TO '/usr1/proj/bray/sql/a_list_countries.copy';
7 khiến tất cả dữ liệu được lưu trữ/đọc dưới dạng định dạng nhị phân chứ không phải là văn bản. Nó có phần nhanh hơn các định dạng văn bản và
COPY country TO PROGRAM 'gzip > /usr1/proj/bray/sql/country_data.gz';
3, nhưng một tệp định dạng nhị phân ít di động hơn trên các kiến ​​trúc máy và phiên bản PostgreSQL. Ngoài ra, định dạng nhị phân là loại dữ liệu rất cụ thể; Ví dụ, nó sẽ không hoạt động để xuất dữ liệu nhị phân từ cột
COPY count
29 và đọc nó vào cột
COPY count
30, mặc dù điều đó sẽ hoạt động tốt ở định dạng văn bản.PostgreSQL versions. Also, the binary format is very data type specific; for example it will not work to output binary data from a
COPY count
29 column and read it into an
COPY count
30 column, even though that would work fine in text format.

Định dạng tệp

COPY (SELECT * FROM country WHERE country_name LIKE 'A%') TO '/usr1/proj/bray/sql/a_list_countries.copy';
7 bao gồm một tiêu đề tệp, không có hoặc nhiều bộ dữ liệu chứa dữ liệu hàng và đoạn giới thiệu tệp. Tiêu đề và dữ liệu nằm trong thứ tự byte mạng.

Ghi chú

PostgreSQL phát hành trước 7.4 đã sử dụng định dạng tệp nhị phân khác. releases before 7.4 used a different binary file format.

Tiêu đề tập tin

Tiêu đề tệp bao gồm 15 byte của các trường cố định, theo sau là khu vực mở rộng tiêu đề có độ dài thay đổi. Các trường cố định là:

Chữ ký

Chuỗi 11 byte

COPY count
32-Lưu ý rằng số 0 byte là một phần bắt buộc của chữ ký. . thay đổi chẵn lẻ.)

Trường cờ

Mặt nạ bit số nguyên 32 bit để biểu thị các khía cạnh quan trọng của định dạng tệp. Các bit được đánh số từ 0 (LSB) đến 31 (MSB). Lưu ý rằng trường này được lưu trữ trong thứ tự byte mạng (byte quan trọng nhất trước tiên), vì tất cả các trường số nguyên được sử dụng trong định dạng tệp. Các bit 16 bóng31 được bảo lưu để biểu thị các vấn đề định dạng tệp quan trọng; Một người đọc nên hủy bỏ nếu nó tìm thấy một bit bất ngờ trong phạm vi này. BIT 0 Ném15 được bảo lưu để báo hiệu các vấn đề định dạng tương thích ngược; Một người đọc chỉ cần bỏ qua bất kỳ bit bất ngờ nào được đặt trong phạm vi này. Hiện tại chỉ có một bit cờ được xác định và phần còn lại phải bằng không:

Bit 16

Nếu 1, OID được bao gồm trong dữ liệu; Nếu 0, không. Các cột hệ thống OID không được hỗ trợ trong PostgreSQL nữa, nhưng định dạng vẫn chứa chỉ báo.PostgreSQL anymore, but the format still contains the indicator.

Chiều dài khu vực mở rộng tiêu đề

Số nguyên 32 bit, chiều dài tính bằng phần còn lại của tiêu đề, không bao gồm cả bản thân. Hiện tại, đây là số 0, và Tuple đầu tiên theo sau ngay lập tức. Những thay đổi trong tương lai đối với định dạng có thể cho phép dữ liệu bổ sung có mặt trong tiêu đề. Một người đọc nên âm thầm bỏ qua bất kỳ dữ liệu mở rộng tiêu đề nào mà nó không biết phải làm gì.

Khu vực mở rộng tiêu đề được hình dung để chứa một chuỗi các khối tự nhận dạng. Trường Cờ không nhằm mục đích nói với độc giả những gì trong khu vực mở rộng. Thiết kế cụ thể của nội dung mở rộng tiêu đề được để lại để phát hành sau.

Thiết kế này cho phép bổ sung tiêu đề tương thích ngược (thêm các khối mở rộng tiêu đề hoặc đặt các bit cờ bậc thấp) và các thay đổi tương thích không trở lại (đặt các bit cờ bậc cao để báo hiệu các thay đổi đó và thêm dữ liệu hỗ trợ vào phần mở rộng khu vực nếu cần).

Bộ dữ liệu

Mỗi tuple bắt đầu với số nguyên 16 bit của số lượng trường trong tuple. . (Từ dài không bao gồm chính nó và có thể bằng không.) Như một trường hợp đặc biệt, -1 chỉ ra giá trị trường null. Không có byte giá trị theo sau trong trường hợp null.

Không có phần đệm căn chỉnh hoặc bất kỳ dữ liệu bổ sung nào khác giữa các trường.

Hiện tại, tất cả các giá trị dữ liệu trong tệp định dạng nhị phân được giả sử là ở định dạng nhị phân (mã định dạng một). Người ta dự đoán rằng một tiện ích mở rộng trong tương lai có thể thêm một trường tiêu đề cho phép chỉ định mã định dạng trên mỗi cột.

Để xác định định dạng nhị phân phù hợp cho dữ liệu tuple thực tế, bạn nên tham khảo nguồn PostgreSQL, đặc biệt là các hàm

COPY count
33 và
COPY count
34 cho mỗi loại dữ liệu của mỗi cột (thường là các chức năng này được tìm thấy trong thư mục
COPY count
35 của phân phối nguồn).PostgreSQL source, in particular the
COPY count
33 and
COPY count
34 functions for each column's data type (typically these functions are found in the
COPY count
35 directory of the source distribution).

Nếu OID được bao gồm trong tệp, trường OID ngay lập tức tuân theo từ đếm trường. Đó là một lĩnh vực bình thường ngoại trừ việc nó không được bao gồm trong số đồng hồ. Lưu ý rằng các cột hệ thống OID không được hỗ trợ trong các phiên bản hiện tại của PostgreSQL.PostgreSQL.

Trailer tập tin

Trailer tệp bao gồm một từ số nguyên 16 bit chứa -1. Điều này dễ dàng được phân biệt với từ đếm trường của một tuple.

Người đọc nên báo cáo một lỗi nếu một từ số trường không phải là -1 cũng như số lượng cột dự kiến. Điều này cung cấp một kiểm tra bổ sung chống lại bằng cách nào đó không đồng bộ với dữ liệu.

Ví dụ

Ví dụ sau đây sao chép bảng cho máy khách bằng thanh dọc (

COPY count
36) làm dấu phân cách trường:

COPY country TO STDOUT (DELIMITER '|');

Để sao chép dữ liệu từ một tệp vào bảng

COPY count
37:

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

Để sao chép vào một tệp, chỉ các quốc gia có tên bắt đầu bằng 'A':

COPY (SELECT * FROM country WHERE country_name LIKE 'A%') TO '/usr1/proj/bray/sql/a_list_countries.copy';

Để sao chép vào một tệp nén, bạn có thể gửi đầu ra thông qua chương trình nén bên ngoài:

COPY country TO PROGRAM 'gzip > /usr1/proj/bray/sql/country_data.gz';

Dưới đây là một mẫu dữ liệu phù hợp để sao chép vào bảng từ

COPY count
1:

AF      AFGHANISTAN
AL      ALBANIA
DZ      ALGERIA
ZM      ZAMBIA
ZW      ZIMBABWE

Lưu ý rằng không gian trắng trên mỗi dòng thực sự là một ký tự tab.

Sau đây là cùng một dữ liệu, đầu ra ở định dạng nhị phân. Dữ liệu được hiển thị sau khi lọc qua tiện ích UNIX

COPY count
39. Bảng có ba cột; thứ nhất có loại
COPY count
40, thứ hai có loại
COPY (SELECT * FROM country WHERE country_name LIKE 'A%') TO '/usr1/proj/bray/sql/a_list_countries.copy';
5 và thứ ba có loại
COPY count
30. Tất cả các hàng có giá trị null trong cột thứ ba.

________số 8

Khả năng tương thích

Không có tuyên bố

WHERE condition
1 trong tiêu chuẩn SQL.

Cú pháp sau đây đã được sử dụng trước phiên bản PostgreSQL 9.0 và vẫn được hỗ trợ:PostgreSQL version 9.0 and is still supported:

COPY table_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 NULL column_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 [, ...] | * } ] ] ]

Lưu ý rằng trong cú pháp này,

COPY count
44 và
COPY country TO PROGRAM 'gzip > /usr1/proj/bray/sql/country_data.gz';
3 được coi là từ khóa độc lập, không phải là đối số của tùy chọn
COPY (SELECT * FROM country WHERE country_name LIKE 'A%') TO '/usr1/proj/bray/sql/a_list_countries.copy';
4.

Cú pháp sau đây đã được sử dụng trước phiên bản PostgreSQL 7.3 và vẫn được hỗ trợ:PostgreSQL version 7.3 and is still supported:

WHERE condition
0