Я новичок в Postgresql и изо всех сил пытаюсь создать функцию для циклирования по целому ряду файлов CSV и их загрузки. Я могу сделать COPY работать отлично с одним файлом, но я не могу правильно получить синтаксис FOR LOOP. Я пытаюсь заменить несколько лет, как мои мухи имени /path/tmp.YEAR.out.csvplpgsql: конкатенация переменной в предложение FROM
Это то, что я изрубил:
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';
Это выдает ошибку на сначала ||. Поэтому я подозреваю, что я управляю конкат переменной i
ненадлежащим образом. Какие-нибудь советы?
Можно ли добавить тег 'r' и решить его таким образом? –
Я, конечно, подумал об этом ... но мне нужна была быстрая загрузка команды postgresql COPY ... У меня есть несколько десятков файлов ~ 500 МБ. –
@dirk, если бы я должен катить строку запроса в R, я мог бы отправить ее в качестве запроса? Я думал, что могу только сделать это с помощью простого sql, а не plpgsql, поэтому я даже не пытался. –