Có một mẹo cũ là sử dụng một đường ống có tên (hoạt động trên Unix, không biết về Windows)
- tạo một đường ống có tên:
mkfifo /tmp/omyfifo
- ghi nội dung tệp vào đó:
zcat mycsv.csv.z > /tmp/omyfifo &
- [từ psql]
copy mytable(col1,...) from '/tmp/omyfifo'
- [khi hoàn tất]:
rm /tmp/omyfifo
zcat
ở phía sau sẽ chặn cho đến khi có người đọc (ở đây:COPY
lệnh) sẽ bắt đầu đọc và nó sẽ kết thúc ở EOF. (hoặc nếu người đọc đóng đường ống)
Bạn thậm chí có thể bắt đầu nhiều cặp pipe + zcat, sẽ được chọn bởi nhiều COPY
câu lệnh trong tập lệnh sql của bạn.
Điều này sẽ hoạt động từ pgadmin, nhưng quá trình 50o (+ zcat) phải có trên máy nơi máy chủ DBMS chạy.
BTW:một thủ thuật tương tự sử dụng netcat có thể được sử dụng để đọc tệp từ một máy từ xa (tất nhiên là phải ghi tệp vào ổ cắm mạng)