Làm cách nào tôi có thể sao chép từ tệp cục bộ sang DB từ xa trong PostgreSQL? [đóng cửa]


9

Tôi là một người mới trong psql và cần một số trợ giúp. Làm cách nào tôi có thể tải CSV cục bộ vào DB từ xa?

Tôi đang sử dụng lệnh sau

\COPY test(user_id, product_id, value) 
      FROM '/Users/testuser/test.tsv' WITH DELIMITER '\t' CSV HEADER;

nhưng điều này tìm kiếm tệp trên DB từ xa trong khi tôi cần làm điều đó trên PC cục bộ của mình.


4
\copyđọc một tệp cục bộ (đó là một psqllệnh và chỉ có thể được sử dụng từ bên trong psql). COPYtuy nhiên (lưu ý ``) bị thiếu sẽ đọc tệp trên máy chủ.
a_horse_with_no_name

Vì vậy, không có cách này? tôi cần phải sao chép tập tin vào máy chủ từ xa?
dùng22149

Có sự khác biệt nào trong bản sao và \ copy không? xin lỗi tôi thực sự mới trong psql chỉ biết orory ở đó tôi có thể làm điều này mà không gặp vấn đề gì
user22149

Sự khác biệt là, một người đọc tệp trên máy chủ và người kia đọc tệp trên máy khách. Rõ ràng đọc tệp trên máy chủ sẽ nhanh hơn.
a_horse_with_no_name

1
@ user22149 Sử dụng tab theo nghĩa đen hoặc E'\t'. Nhưng tab phải là mặc định nếu bạn không chỉ định một dấu phân cách.
Craig Ringer

Câu trả lời:


5

Có hai khả năng ở đây.

  1. Nếu bạn đang sử dụng psql, thì \ copy là cách chính xác để thực hiện những điều bạn đề cập.

  2. Nếu bạn đang sử dụng một chương trình khách hàng mà bạn đã tác giả, thì bạn cần phải

    COPY FROM STDIN.....

Và sau đó nạp tệp vào (xem tài liệu về lệnh COPY .

Lệnh COPY là một con thú hơi kỳ lạ. Đây là một lệnh mà PostgreQuery hiện đang hỗ trợ từ Quel và do đó, nó không phải là tiêu chuẩn và dựa trên một mô hình khác so với các lệnh còn lại. Vì lý do này, điều quan trọng là phải đọc các tài liệu tương đối cẩn thận về lệnh này.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.