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

Nhập CSV PostgreSQL từ dòng lệnh

Giải pháp trong câu trả lời được chấp nhận sẽ chỉ hoạt động trên máy chủ và khi người dùng thực hiện truy vấn sẽ có quyền đọc tệp như được giải thích trong câu trả lời SO này.

Nếu không, một cách tiếp cận linh hoạt hơn là thay thế COPY của SQL bằng psql "meta-command" được gọi là \copy có tất cả các tùy chọn giống như BẢN SAO "thực", nhưng được chạy bên trong máy khách (không cần ; ở cuối):

psql -c "\copy tbname FROM '/tmp/the_file.csv' delimiter '|' csv"

Theo tài liệu, \copy lệnh:

Thực hiện sao chép giao diện người dùng (máy khách). Đây là một hoạt động chạy lệnh SQL COPY, nhưng thay vì máy chủ đọc hoặc ghi tệp được chỉ định, psql đọc hoặc ghi tệp và định tuyến dữ liệu giữa máy chủ và hệ thống tệp cục bộ. Điều này có nghĩa là khả năng truy cập tệp và đặc quyền là của người dùng cục bộ, không phải máy chủ và không cần có đặc quyền của người dùng siêu cấp SQL.

Ngoài ra, nếu the_file.csv chứa tiêu đề ở dòng đầu tiên, nó có thể được nhận dạng bằng cách thêm header ở cuối lệnh trên:

psql -c "\copy tbname FROM '/tmp/the_file.csv' delimiter '|' csv header"


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Không thể trừ các ngày giờ có nhận biết bù trừ và bù trừ

  2. Phát triển PostgreSQL cho Windows, Phần 3

  3. Cột động trong postgres câu lệnh SELECT

  4. Làm cách nào để chèn đúng nhiều hàng vào PG với node-postgres?

  5. Cách sử dụng pgBackRest để sao lưu PostgreSQL và TimescaleDB