зависи от това как зареждате данните, ако ги заредите с "copy", тогава не можете да ги търсите по време на процеса на импортиране. Имам същата ситуация тук, ето как го правя:
1) импортирайте данни в таблица IMPORT
\copy importtable (companyname, what, ever, i , need) from 'FILE' WITH DELIMITER AS ';' CSV HEADER;
2) тази стъпка е необходима, ако импортирате нови компании/потребители, които вече нямат съществуващ идентификатор. прави запитвания към компаниите без ID и създава нови ID
INSERT INTO company (companyid,companyname)
SELECT companyname
FROM importtable
LEFT OUTER JOIN company ON (importtable.companyname=company.companyname)
WHERE company.companyid is NULL
GROUP BY companyname;
3) вмъкнете цялата таблица за импортиране в таблицата за консолидиране
INSERT INTO consolidationable(companyid, what,ever,you,need )
SELECT companyid, what,ever,you,need
FROM importtable
INNER JOIN company ON (importtable.companyname=company.companyname);
Хубавото е, че използва COPY, така че самото импортиране е бързо, и след това използва всички буфери, защото postgreSQL може да прави заявки за всички фирмени идентификатори наведнъж. може да работи много паралелно, когато създавате няколко таблици за импортиране.
person
Chris
schedule
08.06.2013