Tôi mới dùng Postgresql và đang cố gắng xây dựng một hàm để lặp qua hàng loạt tệp CSV và tải chúng. Tôi có thể làm cho COPY hoạt động tốt với một tệp duy nhất, nhưng tôi không thể nhận cú pháp FOR LOOP đúng. Tôi đang cố gắng để thay thế một số năm như ruồi của tôi được đặt tên /path/tmp.YEAR.out.csvplpgsql: nối biến vào mệnh đề FROM
Đây là những gì tôi đã bị hack lên:
CREATE OR REPLACE FUNCTION test() RETURNS void as $$
BEGIN
FOR i IN 1982..1983 LOOP
COPY myTable
FROM '/path/tmp.' || i::VARCHAR || '.out.csv'
delimiters ','
END LOOP;
END;
$$ LANGUAGE 'plpgsql';
này ném một lỗi ở đầu tiên ||. Vì vậy, tôi nghi ngờ tôi đang quản lý concat của biến i
không đúng cách. Có lời khuyên nào không?
Chúng tôi có được phép thêm thẻ 'r' và giải quyết theo cách đó không? –
Tôi chắc chắn đã nghĩ về điều đó ... nhưng tôi cần tải nhanh lệnh postgresql COPY ... Tôi có vài chục tệp ~ 500MB. –
@dirk, nếu tôi đã cuộn chuỗi truy vấn trong R, tôi có thể gửi nó dưới dạng truy vấn không? Tôi đã nghĩ rằng tôi chỉ có thể làm điều đó với sql đơn giản, không phải là plpgsql, vì vậy tôi thậm chí không thử. –