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 Show Tóm tắtCOPY Sự mô tảWHERE 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 2 sao chép nội dung của bảng vào tệp, trong khi WHERE 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 2 cũng có thể sao chép kết quả của truy vấn WHERE 5.PostgreSQL tables and standard file-system files. WHERE 2 copies the contents of a table to a file, while WHERE 3 copies data from a file to a table (appending the data to whatever is in the table already). WHERE 2 can also copy the results of a
WHERE 5 query.Nếu một danh sách cột được chỉ định, WHERE 2 chỉ sao chép dữ liệu trong các cột được chỉ định vào tệp. Đối với WHERE 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 3 sẽ nhận được các giá trị mặc định của chúng.WHERE 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 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 1 hoặc COPY 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 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 1 or COPY 2 is specified, data is transmitted via the connection between the client and the server.Mỗi phụ trợ chạy WHERE 1 sẽ báo cáo tiến trình của nó trong chế độ xem COPY 4. Xem Phần & NBSP; 28.4.6 để biết chi tiết.Thông số
Tên (tùy chọn theo trình độ lược đồ) của một bảng hiện có. COPY 6Mộ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 7A WHERE 5, COPY 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 0Một lệnh để thực thi. Trong WHERE 3, đầu vào được đọc từ đầu ra tiêu chuẩn của lệnh và trong WHERE 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 1Chỉ định rằng đầu vào đến từ ứng dụng máy khách. COPY 2Chỉ đị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 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 2.AF AFGHANISTAN AL ALBANIA DZ ALGERIA ZM ZAMBIA ZW ZIMBABWE1 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 ZIMBABWE2 (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 ZIMBABWE3, 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 ZIMBABWE3 chỉ có giá trị cho các lệnh WHERE 3.AF AFGHANISTAN AL ALBANIA DZ ALGERIA ZM ZAMBIA ZW ZIMBABWE7 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 ZIMBABWE9 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 ZIMBABWE7. Mặc định giống như giá trị AF AFGHANISTAN AL ALBANIA DZ ALGERIA ZM ZAMBIA ZW ZIMBABWE7 (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 3773 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 3776 đượ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 2 và chỉ khi sử dụng định dạng COPY country TO PROGRAM 'gzip > /usr1/proj/bray/sql/country_data.gz';3. COPY0 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 3 và chỉ khi sử dụng định dạng COPY country TO PROGRAM 'gzip > /usr1/proj/bray/sql/country_data.gz';3. COPY3 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 3 và chỉ khi sử dụng định dạng COPY country TO PROGRAM 'gzip > /usr1/proj/bray/sql/country_data.gz';3. COPY7 Chỉ định rằng tệp được mã hóa trong COPY8. 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. COPY9 Điều khoản COPY9 tùy chọn có biểu mẫu chung WHERE trong đó WHERE 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 COPY9 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 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 raKhi hoàn thành thành công, lệnh WHERE 1 trả về thẻ lệnh của biểu mẫuCOPY WHERE 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 08, or the equivalent psql meta-command WHERE 09. This is to prevent confusing the command tag with the data that was just printed.Ghi chúWHERE 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 11 để sao chép các hàng giống như WHERE 12. Cú pháp WHERE 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 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 15.Bạn phải chọn đặc quyền trên bảng có giá trị được đọc bởi WHERE 2 và chèn đặc quyền vào bảng vào đó các giá trị được chèn bởi WHERE 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 5 có liên quan sẽ áp dụng cho WHERE 11 cho các tuyên bố. Hiện tại, WHERE 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 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 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 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 25, WHERE 26 hoặc WHERE 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 0 is executed directly by the server, not by the client application, must be executable by the PostgreSQL user. WHERE 1 naming a file or command is only allowed to database superusers or users who are granted one of the roles WHERE 25, WHERE 26, or WHERE 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 1 với lệnh PSQL WHERE 29. WHERE 29 gọi WHERE 31 hoặc WHERE 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 29 được sử dụng.psql instruction WHERE 29. WHERE 29 invokes WHERE 31 or WHERE 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 29 is used.Nên khuyến cáo rằng tên tệp được sử dụng trong WHERE 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 2, nhưng đối với WHERE 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 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 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 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 41.WHERE 1 Đầu vào và đầu ra bị ảnh hưởng bởi WHERE 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 43, WHERE 43 phải được đặt thành WHERE 46 trước khi sử dụng WHERE 2. Đó cũng là một ý tưởng tốt để tránh bán dữ liệu với WHERE 48 được đặt thành WHERE 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 48.PostgreSQL installations that might use non-default WHERE 43 settings, WHERE 43 should be set to WHERE 46 before using WHERE 2. It is also a good idea to avoid dumping data with
WHERE 48 set to WHERE 49, because negative interval values might be misinterpreted by a server that has a different setting for WHERE 48.Dữ liệu đầu vào được giải thích theo tùy chọn COPY7 hoặc mã hóa máy khách hiện tại và dữ liệu đầu ra được mã hóa trong COPY7 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 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 2, nhưng bảng đích sẽ nhận được các hàng trước đó trong WHERE 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 56 để phục hồi không gian lãng phí.COPY3 và COPY0 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ảnKhi đị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 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 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 62) có thể được sử dụng trong dữ liệu WHERE 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 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 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 68).Các chuỗi ngược đặc biệt sau đây được công nhận bởi WHERE 3:
Hiện tại, WHERE 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 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 1 chuyển đổi dữ liệu Newlines và vận chuyển trở lại chuỗi WHERE 72 và WHERE 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 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 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 1 cho tệp máy chủ; Để thống nhất trên các nền tảng, WHERE 32 luôn gửi cho ____ ____172, bất kể nền tảng máy chủ. WHERE 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 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 72”). Servers running on Microsoft Windows instead output carriage
return/newline (“WHERE 90”), but only for WHERE 1 to a server file; for consistency across platforms, WHERE 32 always sends “WHERE 72” regardless of server platform. WHERE 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 3 will complain if the line endings in the input are not all alike.
Định dạng CSVTù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 ZIMBABWE7, 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 ZIMBABWE7 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 ZIMBABWE7 hoặc Nhân vật AF AFGHANISTAN AL ALBANIA DZ ALGERIA ZM ZAMBIA ZW ZIMBABWE9 đượ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 3773 để 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 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 13). Đọc giá trị tuân theo các quy tắc tương tự. Bạn có thể sử dụng COPY0 để 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 COPY3 để 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 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 13). Reading values follows similar rules. You can use COPY0 to prevent COPY country TO PROGRAM 'gzip > /usr1/proj/bray/sql/country_data.gz';5 input comparisons for specific columns. You can also use COPY3 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 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 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 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ânTù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 29 và đọc nó vào cột COPY 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 29 column and read it into an COPY 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 tinTiê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 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ệuMỗ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 33 và COPY 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 35 của phân phối nguồn).PostgreSQL source, in particular the COPY 33 and COPY 34 functions for each column's data type (typically these functions are found in the COPY 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 tinTrailer 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 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 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 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 39. Bảng có ba cột; thứ nhất có loại COPY 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 30. Tất cả các hàng có giá trị null trong cột thứ ba.________số 8Khả năng tương thíchKhông có tuyên bố WHERE 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 Lưu ý rằng trong cú pháp này, COPY 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 0 |