Python thay thế tiêu đề csv

WHERE condition
37

WHERE condition
38

WHERE condition
39

WHERE condition
40

WHERE condition
41

WHERE condition
42

WHERE condition
43

WHERE condition
44

WHERE condition
45

WHERE condition
46

WHERE condition
380

WHERE condition
381

WHERE condition
382

WHERE condition
383

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 một bảng vào một tệp, trong khi
WHERE condition
3 sao chép dữ liệu từ một tệp vào một bảng (nối thêm dữ liệu vào bất cứ thứ gì đã có trong bảng).
WHERE condition
2 cũng có thể sao chép kết quả của truy vấn
WHERE condition
5

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, từng trường trong tệp được chèn theo thứ tự vào cột đã chỉ định. Các cột trong bảng không được chỉ định trong danh sách cột
WHERE condition
3 sẽ nhận 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 hoặc ghi trực tiếp vào tệp. Người dùng PostgreSQL phải truy cập được tệp (ID người dùng mà máy chủ chạy dưới dạng) và tên phải được chỉ định theo quan điểm của máy chủ. Khi
COPY count
0 được chỉ định, máy chủ sẽ thực thi 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 thực thi bởi người dùng PostgreSQL. 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ủ

Mỗi chương trình phụ trợ đang chạy

WHERE condition
1 sẽ báo cáo tiến độ của nó trong chế độ xem
COPY count
4. Xem Phần 28. 4. 6 để biết chi tiết

Thông số

COPY count
5

Tên (tùy chọn lược đồ đủ điều kiện) của một bảng hiện có

COPY count
6

Một danh sách các cột tùy chọn 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

Lệnh

WHERE condition
5,
COPY count
9,
WHERE condition
90,
WHERE condition
91 hoặc
WHERE condition
92 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

WHERE condition
90,
WHERE condition
91 và
WHERE condition
92, phải cung cấp mệnh đề RETURNING và quan hệ đích không được có quy tắc có điều kiện, quy tắc
WHERE condition
96 hay quy tắc
WHERE condition
97 mở rộng thành nhiều câu lệnh

WHERE condition
98

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à đường dẫn tuyệt đối hoặc tương đối nhưng tên tệp đầu ra phải là đường dẫn tuyệt đối. Người dùng Windows có thể cần sử dụng chuỗi

WHERE condition
99 và nhân đô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 hiện. 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 gọi bởi trình bao, vì vậy nếu bạn cần chuyển bất kỳ đối số nào cho lệnh trình bao đến từ một nguồn không đáng tin cậy, bạn phải cẩn thận loại bỏ hoặc thoát bất kỳ ký tự đặc biệt nào có thể có ý nghĩa đặc biệt đối với trình bao. Vì lý do bảo mật, tốt nhất là sử dụng một chuỗi lệnh cố định hoặc ít nhất là tránh chuyển bất kỳ đầu vào nào của người dùng vào đó

COPY count
1

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

COPY count
2

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

WHERE condition
45

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

WHERE condition
46,
WHERE condition
47 hoặc
WHERE condition
48 để bật tùy chọn và
WHERE condition
49,
WHERE condition
90 hoặc
WHERE condition
91 để tắt tùy chọn đó. Giá trị
WHERE condition
45 cũng có thể được bỏ qua, trong trường hợp đó, giá trị
WHERE condition
46 được giả định

WHERE condition
94

Chọn định dạng dữ liệu được đọc hoặc ghi.

WHERE condition
95,
WHERE condition
96 (Các giá trị được phân tách bằng dấu phẩy) hoặc
WHERE condition
97. Mặc định là
WHERE condition
95

WHERE condition
99

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

WHERE condition
90. Đây được dự định là một tùy chọn hiệu suất để tải dữ liệu ban đầu. Các hàng sẽ chỉ bị đóng băng nếu bảng đang được tải đã được tạo hoặc cắt bớt trong giao dịch phụ hiện tại, không có con trỏ nào mở và không có ảnh chụp nhanh cũ nào được lưu giữ bởi giao dịch này. Hiện tại không thể thực hiện
WHERE condition
91 trên bảng được phân vùng

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

WHERE condition
92

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à ký tự tab ở định dạng văn bản, dấu phẩy ở định dạng

WHERE condition
93. Đây phải là một ký tự một byte. Tùy chọn này không được phép khi sử dụng định dạng
WHERE condition
97

WHERE condition
95

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

WHERE condition
96 (dấu gạch chéo ngược-N) ở định dạng văn bản và một chuỗi trống không được trích dẫn ở định dạng
WHERE condition
93. Bạn có thể thích một chuỗi trống ngay cả ở định dạng văn bản trong trường hợp bạn không muốn phân biệt chuỗi rỗng với chuỗi trống. Tùy chọn này không được phép khi sử dụng định dạng
WHERE condition
97

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 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

WHERE condition
01

Chỉ định rằng tệp chứa một dòng tiêu đề với tên của từng cột trong tệp. Khi xuất ra, dòng đầu tiên chứa 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

WHERE condition
02 (hoặc giá trị Boolean tương đương). Nếu tùy chọn này được đặt thành
WHERE condition
03, số lượng 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 của bảng, theo thứ tự; . Tùy chọn này không được phép khi sử dụng định dạng
WHERE condition
97. Tùy chọn
WHERE condition
03 chỉ hợp lệ cho các lệnh
WHERE condition
3

WHERE condition
07

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

WHERE condition
93

WHERE condition
09

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

WHERE condition
07. Giá trị mặc định giống như giá trị
WHERE condition
07 (để 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 ký tự một byte. Tùy chọn này chỉ được phép khi sử dụng định dạng
WHERE condition
93

WHERE condition
23

Buộc trích dẫn được sử dụng cho tất cả các giá trị không phải ______495 trong mỗi cột được chỉ định. Đầu ra

WHERE condition
95 không bao giờ được trích dẫn. Nếu
WHERE condition
26 được chỉ định, các giá trị không phải ____495 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
WHERE condition
93

WHERE condition
90

Không khớp các giá trị của cột được chỉ định với chuỗi rỗng. Trong trường hợp mặc định khi 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 chuỗi có độ dài bằng 0 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
WHERE condition
93

WHERE condition
93

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

WHERE condition
95. Trong trường hợp mặc định khi chuỗi null trống, điều này sẽ chuyển đổi chuỗi rỗ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
WHERE condition
93

WHERE condition
97

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

WHERE condition
98. 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 Ghi chú bên dưới để biết thêm chi tiết

WHERE condition
99

Mệnh đề tùy chọn

WHERE condition
99 có dạng tổng quát

WHERE condition

trong đó

WHERE condition
01 là bất kỳ biểu thức nào đánh giá kết quả của loại
WHERE condition
45. Hàng nào không thỏa mãn đ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 truy vấn phụ không được phép trong biểu thức

WHERE condition
99 và quá trình đánh giá không thấy bất kỳ thay đổi nào do chính
WHERE condition
1 thực hiện (điều này quan trọng khi biểu thức chứa các lệnh gọi đến hàm
WHERE condition
05)

đầu ra

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

WHERE condition
1 trả về thẻ lệnh có dạng

COPY count

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

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 dạng xem 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
09 TO sao chép các hàng giống như
WHERE condition
10. Cú pháp
WHERE condition
11) TO. có thể được sử dụng để kết xuất tất cả các hàng trong hệ thống phân cấp thừa kế, bảng được phân vùng hoặc dạng 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 được phân vùng hoặc với các dạng xem có trình kích hoạt
WHERE condition
13

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

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

Nếu bảo mật mức 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 câu lệnh
WHERE condition
09 TO. 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 đó, hãy sử dụng các câu lệnh
WHERE condition
90 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 khách. Do đó, chúng phải nằm trên hoặc có thể truy cập được 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 hoặc ghi bởi người dùng PostgreSQL (ID người dùng mà máy chủ chạy dưới dạng đó), chứ không phải máy khách. Tương tự, lệnh được chỉ định với
COPY count
0 được thực thi trực tiếp bởi máy chủ, không phải bởi ứng dụng khách, phải được thực thi bởi người dùng PostgreSQL.
WHERE condition
1 đặt tên tệp hoặc lệnh chỉ được phép đối với siêu người dùng cơ sở dữ liệu hoặc người dùng được cấp một trong các vai trò
WHERE condition
23,
WHERE condition
24 hoặc
WHERE condition
25, vì nó cho phép đọc hoặc ghi 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

Tên tệp được sử dụng trong

WHERE condition
1 luôn được chỉ định làm đường dẫn tuyệt đối. Điều này được thực thi bởi máy chủ trong trường hợp của
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 diễn giải tương ứng với thư mục làm việc của quy trình máy chủ (thông thường là thư mục dữ liệu của cụm), không phải thư mục làm việc của máy khách

Việc thực thi 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 bất kỳ trình kích hoạt nào 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
WHERE condition
90
WHERE condition
33

Đầu vào và đầu ra của

WHERE condition
1 bị ảnh hưởng bởi
WHERE condition
35. Để đảm bảo tính di động cho các cài đặt PostgreSQL khác có thể sử dụng cài đặt
WHERE condition
35 không mặc định, nên đặt
WHERE condition
35 thành
WHERE condition
38 trước khi sử dụng
WHERE condition
2. Bạn cũng nên tránh kết xuất dữ liệu với
WHERE condition
40 được đặt thành
WHERE condition
41, vì các giá trị khoảng âm có thể bị hiểu sai bởi một máy chủ có cài đặt khác cho
WHERE condition
40

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

WHERE condition
97 hoặc mã hóa máy khách hiện tại và dữ liệu đầu ra được mã hóa theo
WHERE condition
97 hoặc mã hóa máy khách hiện tại, ngay cả khi dữ liệu không đi qua máy khách nhưng được máy chủ đọc hoặc ghi trực tiếp vào tệp

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

Có thể sử dụng đồng thời

WHERE condition
93 và
WHERE condition
90 trên cùng một cột. Điều này dẫn đến việc chuyển đổi chuỗi null được trích dẫn thành giá trị null và chuỗi null không được trích dẫn thành chuỗi trống

Định dạng tệp

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

Khi định dạng

WHERE condition
95 được sử dụng, dữ liệu được đọc hoặc ghi là tệp văn bản có một dòng trên mỗi hàng của bả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 hàm đầu vào chấp nhận đối với loại dữ liệu của từng thuộc tính. Chuỗi null được chỉ định được sử dụng thay cho các cột null.
WHERE condition
3 sẽ phát sinh lỗi nếu bất kỳ dòng nào của tệp đầu vào chứa nhiều hoặc ít cột hơn dự kiến

Kết thúc dữ liệu có thể được biểu thị bằng một dòng chỉ chứa dấu gạch chéo ngược (

WHERE condition
53). Điểm đánh dấu kết thúc dữ liệu 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; . 0 giao thức máy khách

Các ký tự dấu gạch chéo ngược (

WHERE condition
54) 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à dấu phân cách hàng hoặc cột. Đặc biệt, các ký tự sau đây phải được đặt trước dấu gạch chéo ngược nếu chúng xuất hiện dưới dạng một phần của giá trị cột. dấu gạch chéo ngược, xuống dòng, xuống dòng và ký tự phân cách hiện tại

Chuỗi null đã 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; . Do đó, không thể nhầm lẫn một chuỗi null chẳng hạn như
WHERE condition
96 với giá trị dữ liệu thực tế
WHERE condition
96 (sẽ được biểu thị là
WHERE condition
60)

Các chuỗi dấu gạch chéo ngược đặc biệt sau đây được nhận dạng bởi

WHERE condition
3

SequenceRepresents

WHERE condition
62Backspace (ASCII 8)
WHERE condition
63Nguồn cấp dữ liệu biểu mẫu (ASCII 12)
WHERE condition
64Dòng mới (ASCII 10)
WHERE condition
65Dấu gạch chéo ngược (ASCII 13)
WHERE condition
66Tab (ASCII 9)
WHERE condition
67Tab dọc (ASCII 11)
WHERE condition
54
WHERE condition
69Dấu gạch chéo ngược theo sau bởi một đến ba chữ số bát phân _____067 theo sau dấu gạch chéo ngược số đó _
WHERE condition
67

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 bát phân hoặc chữ số hex, 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ự gạch chéo ngược nào khác không được đề cập trong bảng trên sẽ được lấy để đại diện cho chính nó. Tuy nhiên, hãy cẩn thận khi thêm 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 khớp với điểm đánh dấu cuối dữ liệu (

WHERE condition
53) hoặc chuỗi rỗng (
WHERE condition
96 theo mặc định). Các chuỗi này sẽ được nhận dạng trước khi thực hiện bất kỳ quá trình xử lý dấu gạch chéo ngược nào khác

Chúng tôi đặc biệt khuyến nghị rằng các ứng dụng tạo dữ liệu

WHERE condition
1 sẽ chuyển đổi dữ liệu xuống dòng mới và xuống dòng tương ứng với chuỗi
WHERE condition
64 và
WHERE condition
65. Hiện tại, có thể biểu diễn trả về xuống dòng dữ liệu bằng dấu gạch chéo ngược và xuống dòng và biểu thị một dòng dữ liệu mới bằng dấu gạch chéo ngược và xuống dòng. 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ị hỏ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 chuỗi dấu gạch chéo ngược chữ số bát phân và chữ số thập lục phân phải tạo thành các ký tự hợp lệ trong mã hóa cơ sở dữ liệu

WHERE condition
2 sẽ kết thúc mỗi hàng bằng một dòng mới kiểu Unix (“
WHERE condition
64”). Thay vào đó, các máy chủ chạy trên Microsoft Windows xuất ký tự xuống dòng/dòng mới (“
WHERE condition
82”), nhưng chỉ dành cho
WHERE condition
1 vào tệp máy chủ; .
WHERE condition
3 có thể xử lý các dòng kết thúc bằng dòng mới, xuống dòng hoặc xuống dòng/dòng mới. Để giảm nguy cơ mắc lỗi do dấu gạch chéo ngược xuống dòng hoặc xuống dòng có nghĩa là dữ liệu, ________ 03 sẽ khiếu nại nếu các dòng kết thúc trong đầu vào không giống nhau

Đị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ị được phân tách bằng dấu phẩy (

WHERE condition
93) đượ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 được định dạng văn bản chuẩn của PostgreSQL sử dụng, nó tạo và nhận ra cơ chế thoát CSV chung

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

WHERE condition
92. Nếu giá trị chứa ký tự phân cách, ký tự
WHERE condition
07, chuỗi
WHERE condition
95, ký tự xuống dòng hoặc ký tự xuống dòng, thì toàn bộ giá trị được thêm tiền tố và hậu tố bởi ký tự
WHERE condition
07 và bất kỳ sự xuất hiện nào trong giá trị của ký tự
WHERE condition
07 hoặc ký tự . Bạn cũng có thể sử dụng
WHERE condition
23 để buộc trích dẫn khi xuất các giá trị không phải
WHERE condition
95 trong các cột cụ thể

Định dạng

WHERE condition
93 không có cách tiêu chuẩn để phân biệt giá trị
WHERE condition
95 với một chuỗi trống. PostgreSQL's
WHERE condition
1 xử lý việc này bằng cách trích dẫn. Một
WHERE condition
95 được xuất ra dưới dạng chuỗi tham số
WHERE condition
95 và không được trích dẫn, trong khi giá trị không phải
WHERE condition
95 khớp với chuỗi tham số
WHERE condition
95 được trích dẫn. Ví dụ: với cài đặt mặc định,
WHERE condition
95 được viết dưới dạng chuỗi trống không được trích dẫn, trong khi giá trị dữ liệu chuỗi trống được viết bằng dấu ngoặc kép (
COPY count
05). Đọc các giá trị tuân theo các quy tắc tương tự. Bạn có thể sử dụng
WHERE condition
90 để ngăn so sánh đầu vào
WHERE condition
95 cho các cột cụ thể. Bạn cũng có thể sử dụng
WHERE condition
93 để chuyển đổi các giá trị dữ liệu chuỗi rỗng được trích dẫn thành
WHERE condition
95

Bởi vì dấu gạch chéo ngược không phải là một ký tự đặc biệt trong định dạng

WHERE condition
93, nên
WHERE condition
53, điểm đánh dấu kết thúc dữ liệu, cũng có thể xuất hiện dưới dạng một giá trị dữ liệu. Để tránh bất kỳ sự hiểu sai nào, giá trị dữ liệu
WHERE condition
53 xuất hiện dưới dạng một mục duy nhất trên một dòng sẽ tự động được trích dẫn trên đầu ra và trên đầu vào, nếu được trích dẫn, sẽ không được hiểu là điểm đánh dấu kết thúc dữ liệu. 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 không được trích dẫn và có thể có giá trị là
WHERE condition
53, thì bạn có thể cần trích dẫn giá trị đó trong tệp đầu vào

Ghi chú

Ở định dạng

WHERE condition
93, tất cả các ký tự đều có ý nghĩa. Giá trị được trích dẫn bao quanh bởi khoảng trắng hoặc bất kỳ ký tự nào khác ngoài
WHERE condition
92, 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
WHERE condition
93 có khoảng trắng ở 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
WHERE condition
93 để xóa khoảng trắng ở cuối, trước khi nhập dữ liệu vào PostgreSQL

Ghi chú

Định dạng CSV sẽ nhận dạng và tạo tệp CSV với các giá trị được trích dẫn chứa dấu xuống dòng và nguồn cấp dữ liệu được nhúng. Do đó, các tệp không hoàn toàn là một dòng trên mỗi hàng của bảng như các tệp định dạng văn bản

Ghi chú

Nhiều chương trình tạo ra các tệp CSV kỳ lạ và đôi khi sai lệch, vì vậy định dạng tệp mang tính quy ước hơn là tiêu chuẩn. Do đó, bạn có thể gặp phải một số tệp không thể nhập bằng cơ chế này và

WHERE condition
1 có thể tạo tệp mà các chương trình khác không thể xử lý

Định dạng nhị phân

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

WHERE condition
97 khiến tất cả dữ liệu được lưu trữ/đọc dưới dạng định dạng nhị phân thay vì dưới dạng văn bản. Nó nhanh hơn một chút so với định dạng văn bản và
WHERE condition
93, nhưng 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ể;

Định dạng tệp

WHERE condition
97 bao gồm tiêu đề tệp, không 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 theo 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

Tiêu đề tệp

Tiêu đề tệp bao gồm 15 byte trường cố định, theo sau là vùng 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
24 — lưu ý rằng byte 0 là một phần bắt buộc của chữ ký. (Chữ ký được thiết kế để cho phép dễ dàng xác định các tệp đã bị trộn bởi quá trình truyền không sạch 8 bit. Chữ ký này sẽ bị thay đổi bởi các bộ lọc dịch cuối dòng, bỏ byte 0, bỏ bit cao hoặc 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. Bit được đánh số từ 0 (LSB) đến 31 (MSB). Lưu ý rằng trường này được lưu trữ theo thứ tự byte mạng (byte quan trọng nhất trước), cũng như tất cả các trường số nguyên được sử dụng trong định dạng tệp. Các bit 16–31 được dành riêng để biểu thị các vấn đề quan trọng về định dạng tệp; . Các bit 0–15 được dành riêng để báo hiệu các vấn đề về định dạng tương thích ngược; . 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 0

bit 16

Nếu 1, OID được bao gồm trong dữ liệu; . 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

Độ dài vùng mở rộng tiêu đề

Số nguyên 32 bit, độ dài tính bằng byte của phần còn lại của tiêu đề, không bao gồm chính. Hiện tại, giá trị này bằng 0 và bộ đầ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 có thêm dữ liệu trong tiêu đề. Người đọc nên âm thầm bỏ qua bất kỳ dữ liệu mở rộng tiêu đề nào mà họ không biết phải làm gì với

Khu vực mở rộng tiêu đề được hình dung để chứa một chuỗi các khối tự xác định. Trường cờ không nhằm mục đích cho người đọc biết nội dung 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 cho bản phát hành sau

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

bộ dữ liệu

Mỗi bộ dữ liệu bắt đầu bằng số nguyên 16 bit của số trường trong bộ dữ liệu. (Hiện tại, tất cả các bộ dữ liệu trong một bảng sẽ có cùng số lượng, nhưng điều đó có thể không phải lúc nào cũng đúng. ) Sau đó, được lặp lại cho từng trường trong bộ dữ liệu, có một từ có độ dài 32 bit theo sau là nhiều byte dữ liệu trường đó. (Từ độ dài không bao gồm chính nó và có thể bằng 0. ) Trong trường hợp đặc biệt, -1 biểu thị giá trị trường NULL. Không có byte giá trị nào 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 coi là ở định dạng nhị phân (mã định dạng một). Người ta dự đoán rằng tiện ích mở rộng trong tương lai có thể thêm trường tiêu đề cho phép chỉ định mã định dạng cho mỗi cột

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

COPY count
25 và
COPY count
26 cho từng loại dữ liệu của cột (thông thường các hàm này được tìm thấy trong thư mục
COPY count
27 của phân phối nguồn)

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

Đoạn giới thiệu tệp

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

Người đọc sẽ báo lỗi nếu từ đếm 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 việc bằng cách nào đó không đồng bộ hóa với dữ liệu

ví dụ

Ví dụ sau đây sao chép một bảng tới máy khách bằng cách sử dụng thanh dọc (______928) làm dấu phân cách trường

WHERE condition
9

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

COPY count
29

WHERE condition
4

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

WHERE condition
9

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

WHERE condition
9

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

COPY count
1

WHERE condition
0

Lưu ý rằng khoảng 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
31. Bảng có ba cột; . Tất cả các hàng có giá trị null trong cột thứ ba

WHERE condition
2

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

Không có câu lệnh

WHERE condition
1 trong tiêu chuẩn SQL

Cú pháp sau đã được sử dụng trước PostgreSQL phiên bản 9. 0 và vẫn được hỗ trợ

WHERE condition
9

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

COPY count
36 và
WHERE condition
93 được coi là các từ khóa độc lập, không phải là đối số của tùy chọn
WHERE condition
94