PostgreSQL
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> PostgreSQL

CHỈ SAO CHÉP một số cột từ CSV đầu vào?

Tôi không biết bạn lấy cú pháp đó ở đâu, nhưng COPY không có danh sách các bí danh cột như vậy. Xem phần trợ giúp:

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

(AS không phải là một trong những tùy chọn được liệt kê; để xem toàn bộ đầu ra, hãy chạy \d copy trong psql hoặc xem hướng dẫn sử dụng cho copy lệnh trực tuyến).

Không có cơ sở lập bản đồ nào trong COPY cho phép bạn chỉ đọc một số cột của CSV đầu vào. Nó thực sự hữu ích, nhưng không ai có thời gian / sở thích / kinh phí để thực hiện nó. Dù sao thì đây thực sự chỉ là một trong nhiều tác vụ chuyển đổi / lọc dữ liệu mà mọi người muốn.

PostgreSQL mong đợi danh sách cột được cung cấp trong COPY theo cùng một thứ tự, từ trái sang phải, giống như những gì trong tệp CSV và có cùng số lượng mục nhập như tệp CSV có cột. Vì vậy, nếu bạn viết:

COPY con (date,kgs)

thì PostgreSQL sẽ mong đợi một CSV đầu vào có chính xác hai cột . Nó sẽ sử dụng cột csv đầu tiên cho "date" cột bảng và cột csv thứ hai cho "kgs" cột bảng. Nó không quan tâm tiêu đề CSV là gì, chúng sẽ bị bỏ qua nếu bạn chỉ định WITH (FORMAT CSV, HEADER ON) hoặc được coi là các hàng dữ liệu bình thường nếu bạn không chỉ định HEADER .

PostgreSQL 9.4 thêm FROM PROGRAM sang COPY , vì vậy bạn có thể chạy lệnh shell để đọc và lọc tệp. Một tập lệnh Python hoặc Perl đơn giản sẽ thực hiện công việc.

Nếu đó là một tệp nhỏ, chỉ cần mở một bản sao trong bảng tính mà bạn chọn dưới dạng tệp csv, xóa các cột không mong muốn và lưu nó, vì vậy chỉ có datekgs các cột vẫn còn.

Ngoài ra, COPY vào một bảng dàn dựng có tất cả các cột giống như CSV , sau đó thực hiện INSERT INTO ... SELECT để chỉ chuyển dữ liệu mong muốn vào bảng đích thực.




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. PostgreSQL với Homebrew trên Mac

  2. máy chủ nút không thể kết nối với db postgres

  3. Sử dụng pyspark để kết nối với PostgreSQL

  4. Tự động tạo các cột cho bảng chéo trong PostgreSQL

  5. Postgresql - lấy hàng datetime gần nhất so với giá trị datetime nhất định