Phiên bản được hỗ trợ:hiện tại(17) /16 / 15 / 14 / 13
Phiên bản phát triển:18 / Devel
Phiên bản không được hỗ trợ:12 / 11 / 10 / 9.6 / 9.5 / 9.4 / 9.3 / 9.2 / 9.1 / 9.0 / 8.4 / 8.3 / 8.2 / 8.1 / 8.0 / 7.4 / 7.3 / 7.2 / 7.1
Tài tỷ lệ kèo bóng đá 88 này dành cho phiên bản không được hỗ trợ của PostgreSQL.
Bạn có thể muốn xem cùng một trang chohiện tạiPhiên bản hoặc một trong tỷ lệ kèo bóng đá 88 phiên bản được hỗ trợ khác được liệt kê ở trên thay thế.

31.8. tỷ lệ kèo bóng đá 88 được liên kết vớiCopy11414_11426

Thesao chép11473_11487PostgreSQLCó tỷ lệ kèo bóng đá 88 tùy chọn để đọc hoặc viết đến kết nối mạng được sử dụng bởilibpq. tỷ lệ kèo bóng đá 88 được mô tả trong này Phần cho phép các ứng dụng tận dụng khả năng này bằng cách cung cấp hoặc tiêu thụ dữ liệu đã sao chép.

Quy trình tổng thể là ứng dụng đầu tiên phát hành SQLCopylệnh thông quaPQEXEChoặc một trong tỷ lệ kèo bóng đá 88 tương đương. Các phản hồi cho điều này (nếu không có lỗi trong lệnh) sẽ làpgresultđối tượng mang mã trạng thái củaPGRES_COPY_OUThoặcPGRES_COPY_IN(Tùy thuộc vào bản sao được chỉ định phương hướng). Ứng dụng sau đó nên sử dụng tỷ lệ kèo bóng đá 88 của điều này phần để nhận hoặc truyền các hàng dữ liệu. Khi truyền dữ liệu hoàn thành, một người khácpgresultĐối tượng được trả lại để chỉ ra thành công hoặc thất bại của việc chuyển nhượng. Của nó Trạng thái sẽ làPGRES_COMMAND_OKcho thành công hoặcPGRES_FATAL_ERRORNếu một số Vấn đề đã gặp phải. Tại thời điểm này, tỷ lệ kèo bóng đá 88 lệnh SQL có thể được cấp quaPQEXEC. (Nó không phải là có thể thực thi tỷ lệ kèo bóng đá 88 lệnh SQL khác bằng cách sử dụng cùng một kết nối Trong khiCopyHoạt động là trong tiến triển.)

Nếu ACopyLệnh được cấp quaPQEXECTrong một chuỗi có thể chứa tỷ lệ kèo bóng đá 88 lệnh bổ sung, ứng dụng phải tiếp tục tìm nạp kết quả quaPQGetResultSau khi hoàn thànhCopyTrình tự. Chỉ một khiPQGetResultreturnnullCó chắc chắn rằngPQEXECChuỗi lệnh được thực hiện và an toàn khi phát hành thêm tỷ lệ kèo bóng đá 88 lệnh.

tỷ lệ kèo bóng đá 88 của phần này chỉ nên được thực hiện sau khi có được trạng thái kết quả củaPGRES_COPY_OUThoặcPGRES_COPY_INtừPQEXEChoặcPQGetResult.

Apgresultđối tượng mang một trong những tỷ lệ kèo bóng đá 88 giá trị trạng thái này mang một số dữ liệu bổ sung vềCopyHoạt động đang bắt đầu. Cái này Dữ liệu bổ sung có sẵn bằng cách sử dụng tỷ lệ kèo bóng đá 88 cũng được sử dụng liên quan đến kết quả truy vấn:

PQNFields

Trả về số lượng cột (trường) sẽ được sao chép.

PQBinaryTuples

0 Cho biết định dạng bản sao tổng thể là văn bản (hàng tách biệt bởi tỷ lệ kèo bóng đá 88 dòng mới, tỷ lệ kèo bóng đá 88 cột được phân tách bằng phân tách ký tự, vv). 1 cho biết định dạng bản sao tổng thể là nhị phân. Nhìn thấyCopy14680_14712

PQFFormat

Trả về mã định dạng (0 cho văn bản, 1 cho nhị phân) được liên kết với mỗi cột của hoạt động sao chép. tỷ lệ kèo bóng đá 88 Mã định dạng trên mỗi cột sẽ luôn bằng không khi Định dạng bản sao tổng thể là văn bản, nhưng định dạng nhị phân có thể Hỗ trợ cả cột văn bản và nhị phân. (Tuy nhiên, kể từ Thực hiện hiện tại củaCopy,, Chỉ tỷ lệ kèo bóng đá 88 cột nhị phân xuất hiện trong một bản sao nhị phân; Vì vậy, tỷ lệ kèo bóng đá 88 định dạng trên mỗi cột luôn phù hợp với định dạng tổng thể tại hiện tại.)

​​Lưu ý:Các giá trị dữ liệu bổ sung này chỉ là Có sẵn khi sử dụng Giao thức 3.0. Khi sử dụng Giao thức 2.0, Tất cả tỷ lệ kèo bóng đá 88 này sẽ trả về 0.

31.8.1. Chức năng gửiCopyData

tỷ lệ kèo bóng đá 88 này được sử dụng để gửi dữ liệu trongSao chép từ Stdin. Họ sẽ thất bại nếu được gọi khi tỷ lệ kèo bóng đá 88 nối không có trongcopy_inBang.

pqputcopydata

Gửi dữ tỷ lệ kèo bóng đá 88 đến máy chủ trong khicopy_inBang.

int pqputcopydata (pgconn *Conn,
                  const char *bộ đệm,
                  int nbytes);

TruyềnCopyDữ tỷ lệ kèo bóng đá 88 trong được chỉ địnhbộ đệm, của chiều dàinbyte16669_16926pqerrormessageĐể lấy chi tiết nếu Giá trị trả về là -1. Nếu giá trị bằng không, hãy đợi viết sẵn và thử lại.)

Ứng dụng có thể chiaCopyluồng dữ tỷ lệ kèo bóng đá 88 thành tải bộ đệm của bất kỳ Kích thước thuận tiện. Ranh giới tải bộ đệm không có ngữ nghĩa ý nghĩa khi gửi. Nội dung của dữ tỷ lệ kèo bóng đá 88 luồng phải khớp với định dạng dữ tỷ lệ kèo bóng đá 88 dự kiến ​​bởiCopylệnh; nhìn thấysao chépĐể biết chi tiết.

pqputcopyend

Gửi chỉ số cuối dữ tỷ lệ kèo bóng đá 88 đến máy chủ trong khicopy_inBang.

int pqputcopyend (pgconn *Conn,
                 const char *errormsg);

tỷ lệ kèo bóng đá 88 thúccopy_in17983_18022errormsgnull. Nếu nhưerrormsgkhông phảinullSau đóCopybị buộc phải thất bại, với chuỗi được trỏ bởierrormsgĐược sử dụng làm lỗi tin nhắn. (Người ta không nên cho rằng lỗi chính xác này Tin nhắn sẽ trở lại từ máy chủ, tuy nhiên, máy chủ có thể đã thất bạiCopyvì lý do riêng của nó. Cũng lưu ý rằng Tùy chọn buộc lỗi không hoạt động khi sử dụng tỷ lệ kèo bóng đá 88 nối Pre-3.0 Protocol.)

tỷ lệ kèo bóng đá 88 quả là 1 nếu dữ liệu chấm dứt được gửi, không Nếu nó không được gửi vì nỗ lực sẽ chặn (cái này trường hợp chỉ có thể nếu tỷ lệ kèo bóng đá 88 nối không bị chặn chế độ), hoặc -1 nếu xảy ra lỗi. (Sử dụngpqerrormessageĐể lấy chi tiết nếu Giá trị trả về là -1. Nếu giá trị bằng không, hãy đợi viết sẵn và thử lại.)

Sau khi gọi thành côngpqputcopyend, gọiPQGetResultĐể có được tỷ lệ kèo bóng đá 88 quả cuối cùng trạng thái củaCopylệnh. Một có thể đợi tỷ lệ kèo bóng đá 88 quả này có sẵn trong thông thường đường. Sau đó trở lại hoạt động bình thường.

31.8.2. Chức năng nhậnsao chépDữ tỷ lệ kèo bóng đá 88

tỷ lệ kèo bóng đá 88 này được sử dụng để nhận dữ liệu trongSao chép vào stdout. Họ sẽ thất bại nếu được gọi khi tỷ lệ kèo bóng đá 88 nối không có trongcopy_outState.

PQGetCopydata

Nhận dữ tỷ lệ kèo bóng đá 88 từ máy chủ trongcopy_outState.

20297_20395

cố gắng lấy một hàng dữ tỷ lệ kèo bóng đá 88 khác từ máy chủ Trong mộtCopy. Dữ tỷ lệ kèo bóng đá 88 luôn luôn trả lại một hàng dữ tỷ lệ kèo bóng đá 88 tại một thời điểm; Nếu chỉ một hàng một phần là Có sẵn, nó không được trả lại. Sự trở lại thành công của một Hàng dữ tỷ lệ kèo bóng đá 88 liên quan đến việc phân bổ một khối bộ nhớ để giữ dữ tỷ lệ kèo bóng đá 88. Thebộ đệmTham số Phải khôngnull. *bộ đệmđược đặt thành chỉ vào phân bổ bộ nhớ hoặc đếnNULLTrong trường hợp Không có bộ đệm được trả lại. Không phảinullBộ đệm tỷ lệ kèo bóng đá 88 quả phải được giải phóng bằng cách sử dụngpqfreememKhi không cần thiết.

21204_21475Copy. tỷ lệ kèo bóng đá 88 quả của số không chỉ ra rằngCopyvẫn còn trong tiến trình, nhưng chưa có hàng nào có sẵn (điều này chỉ là có thể khiAsynclà đúng). tỷ lệ kèo bóng đá 88 quả của -1 chỉ ra rằngCopyđược thực hiện. tỷ lệ kèo bóng đá 88 quả của -2 chỉ ra rằng một lỗi đã xảy ra (tham khảopqerrormessagevì lý do).

KhiAsynclà đúng (không không),PQGetCopydataWill không chặn chờ đầu vào; nó sẽ trả về 0 nếuCopyvẫn đang được tiến hành nhưng không có Hàng hoàn chỉnh có sẵn. (Trong trường hợp này, hãy đợi Read-Ready và sau đó gọiPQConsumeInputTrước khi gọiPQGetCopydataMột lần nữa.) KhiAsynclà sai (không),PQGetCopydataSẽ chặn Cho đến khi dữ tỷ lệ kèo bóng đá 88 có sẵn hoặc hoạt động hoàn thành.

sauPQGetCopydatareturn -1, gọiPQGetResultĐể có được tỷ lệ kèo bóng đá 88 quả cuối cùng trạng thái củaCopylệnh. Một có thể đợi tỷ lệ kèo bóng đá 88 quả này có sẵn trong thông thường đường. Sau đó trở lại hoạt động bình thường.

31.8.3. tỷ lệ kèo bóng đá 88 lỗi thời choCopy

tỷ lệ kèo bóng đá 88 này đại diện cho các phương thức xử lý cũ hơnCopy. Mặc dù họ vẫn hoạt động, họ được không dùng nữa do xử lý lỗi kém, tỷ lệ kèo bóng đá 88 phương pháp bất tiện phát hiện kết thúc dữ liệu và thiếu hỗ trợ cho nhị phân hoặc Chuyển khoản không chặn.

PQGetLine

Đọc một dòng ký tự tỷ lệ kèo bóng đá 88 thúc mới (được truyền bởi máy chủ) vào chuỗi bộ đệm có kích thướcLEGN.

int PQGetLine (PGConn *Conn,
              Char *bộ đệm,
              int length);

Hàm này sao chép lên24075_24083-1 ký tự vào bộ đệm và Chuyển đổi việc chấm dứt dòng mới thành một byte số 0.PQGetLinereturnEOFở cuối đầu vào, 0 nếu toàn bộ dòng đã được đọc và 1 nếu bộ đệm đầy Nhưng dòng mới tỷ lệ kèo bóng đá 88 thúc vẫn chưa được đọc.

Lưu ý rằng ứng dụng phải kiểm tra xem tỷ lệ kèo bóng đá 88 mới dòng bao gồm hai ký tự\., chỉ ra rằng máy chủ có Đã hoàn thành việc gửi tỷ lệ kèo bóng đá 88 quả củaCopyLệnh. Nếu ứng dụng có thể nhận tỷ lệ kèo bóng đá 88 dòng nhiều hơnlength-1 ký tự dài, cần chăm sóc Để chắc chắn rằng nó nhận ra\.dòng chính xác (và không, ví dụ, sai lầm tỷ lệ kèo bóng đá 88 thúc một dòng dữ liệu dài cho một dòng Terminator).

PQGetLineAsync

Đọc một hàngCopyDữ tỷ lệ kèo bóng đá 88 (truyền bởi máy chủ) vào bộ đệm mà không có chặn.

int PQGetLineAnyNC (PGConn *Conn,
                   Char *bộ đệm,
                   int bufsize);

Hàm này tương tựPQGetLine, nhưng nó có thể được sử dụng bởi tỷ lệ kèo bóng đá 88 ứng dụng phải đọcCopyDữ tỷ lệ kèo bóng đá 88 không đồng bộ, nghĩa là không chặn. Có đã ban hànhCopyLệnh và Got APGRES_COPY_OUTPhản hồi, ứng dụng nên gọiPQConsumeInputPQGetLineAsyncCho đến khi tỷ lệ kèo bóng đá 88 thúc dữ liệu tín hiệu được phát hiện.

Không giống nhưPQGetLine, this chức năng chịu trách nhiệm phát hiện tỷ lệ kèo bóng đá 88 thúc dữ liệu.

trên mỗi cuộc gọi,PQGetLineAsyncsẽ trả về dữ tỷ lệ kèo bóng đá 88 nếu a Hàng dữ tỷ lệ kèo bóng đá 88 hoàn chỉnh có sẵn tronglibpqbộ đệm đầu vào. Nếu không, không Dữ liệu được trả về cho đến khi phần còn lại của hàng đến. tỷ lệ kèo bóng đá 88 chức năng trả về -1 nếu điểm đánh dấu dữ liệu cuối sao được công nhận hoặc 0 nếu không có dữ liệu hoặc Số dương cho số byte dữ liệu trả lại. Nếu -1 được trả về, người gọi phải gọi tiếp theoPQENDCOPY, sau đó trở lại để xử lý bình thường.

Dữ tỷ lệ kèo bóng đá 88 được trả về sẽ không mở rộng ra khỏi hàng dữ tỷ lệ kèo bóng đá 88 ranh giới. Nếu có thể, toàn bộ hàng sẽ được trả lại tại một thời gian. Nhưng nếu bộ đệm do người gọi cung cấp cũng vậy nhỏ để giữ một hàng được gửi bởi máy chủ, sau đó là một phần Hàng dữ tỷ lệ kèo bóng đá 88 sẽ được trả về. Với dữ tỷ lệ kèo bóng đá 88 văn bản, điều này có thể được phát hiện bằng cách kiểm tra xem byte trả về cuối cùng là\ nhoặc không. (Trong một nhị phânCopy, Phân tích cú pháp thực tế củaCopyĐịnh dạng dữ tỷ lệ kèo bóng đá 88 sẽ cần để đưa ra quyết định tương đương.) Chuỗi không được chấm dứt. (Nếu bạn muốn thêm một chấm dứt null, hãy chắc chắn vượt quaBufsizeMột nhỏ hơn phòng thực sự có sẵn.)

pqputline

Gửi một chuỗi tỷ lệ kèo bóng đá 88 thúc null đến máy chủ. Trả lại 0 nếu ok vàEOFNếu không thể gửi chuỗi.

int pqputline (pgconn *Conn,
              const char *chuỗi);

TheCopyluồng dữ liệu được gửi bởi một loạt tỷ lệ kèo bóng đá 88 cuộc gọi đếnpqputlinecó định dạng giống như như vậy Được trả về bởiPQGetLineAsync,, ngoại trừ tỷ lệ kèo bóng đá 88 ứng dụng không bắt buộc phải gửi chính xác một hàng dữ liệu trên mỗipqputlinecuộc gọi; Bạn có thể gửi một dòng một phần hoặc nhiều dòng mỗi cuộc gọi.

Lưu ý:trướcPostgreSQLGiao thức 3.0, đó là cần thiết để ứng dụng gửi rõ ràng Hai ký tự\.như một trận chung tỷ lệ kèo bóng đá 88 dòng để chỉ cho máy chủ rằng nó đã hoàn thành GửiCopyDữ tỷ lệ kèo bóng đá 88. Trong khi Điều này vẫn hoạt động, nó không được chấp nhận và đặc biệt Ý nghĩa của\.có thể dự kiến ​​sẽ được gỡ bỏ trong một bản phát hành trong tương lai. Nó là đủ để gọi29371_29382sau khi đã gửi Dữ tỷ lệ kèo bóng đá 88 thực tế.

pqputnbytes

Gửi chuỗi không tỷ lệ kèo bóng đá 88 thúc không đến máy chủ. Trả về 0 nếu ok vàEOFNếu không thể để gửi chuỗi.

int pqputnbytes (pgconn *Conn,
                const char *bộ đệm,
                int nbytes);

Điều này giống hệtpqputline, ngoại trừ bộ đệm dữ liệu không cần phải tỷ lệ kèo bóng đá 88 thúc vì số lượng byte Gửi được chỉ định trực tiếp. Sử dụng quy trình này khi gửi dữ liệu nhị phân.

PQENDCOPY

Đồng bộ hóa với máy chủ.

int pqendcopy (pgconn *Conn);

30509_30676pqputlinehoặc khi chuỗi cuối cùng có được nhận từ máy chủ bằng cách sử dụngPGGetLine. Nó phải được phát hành hoặc Máy chủ sẽ nhận được"Out of Sync"Với máy khách. Khi trở về từ chức năng này, Máy chủ đã sẵn sàng để nhận lệnh SQL tiếp theo. tỷ lệ kèo bóng đá 88 Giá trị trở lại là 0 khi hoàn thành thành công, không nếu không thì. (Sử dụngPQerrorMessageĐể lấy chi tiết nếu giá trị trả về không khác.)

Khi sử dụngPQGetResult,, Ứng dụng sẽ trả lờiPGRES_COPY_OUTtỷ lệ kèo bóng đá 88 quả bằng cách thực thiPQGetLinenhiều lần, theo sau làpqendcopySau dòng Terminator được nhìn thấy. Sau đó nó sẽ trở lại31696_31709Vòng lặp cho đếnPQGetResultTrả về một null con trỏ. Tương tự APGRES_COPY_INtỷ lệ kèo bóng đá 88 quả được xử lý bởi A sê -ripqputlinecuộc gọi theo sau làPQENDCOPY, sau đó trở lạiPQGetResultVòng lặp. Sự sắp xếp này sẽ đảm bảo rằngCopyLệnh được nhúng trong một loạtSQL32272_32321

tỷ lệ kèo bóng đá 88 ứng dụng cũ có khả năng gửiCopyViaPQEXECvà giả sử rằng giao dịch được thực hiện sauPQENDCOPY. Điều này sẽ chỉ hoạt động chính xác nếuCopylà duy nhấtSQLLệnh trong lệnh sợi dây.