Я не вижу в этом проблемы, за исключением времени, которое требуется для обработки такого количества строк.PDI (ложка / чайник) работает с потоками , а не с " наборами данных ", как в SQL, и строки обрабатываются, как толькоони получены.Из-за этого PDI, скорее всего, никогда не придется обрабатывать все 900 миллионов строк одновременно, и вам не придется ждать, пока все они будут возвращены из SQL, прежде чем он начнет обработку.
Table output
step имеет значение Commit size
для управления количеством записей, отправляемых в вашу целевую таблицу за одну транзакцию .Хитрость заключается в том, чтобы сбалансировать количество времени, необходимое для запуска новых соединений, и время, необходимое для обработки большого количества строк в одной транзакции.Я запускаю значения от 200 до 5000, в зависимости от моих потребностей и возможностей системы, но вы, возможно, сможете подняться выше этого значения.
Похоже, ваша большая проблема будет возвращать столько строк из хранимой процедуры.Использование SP вместо SELECT
или VIEW
означает, что вам придется искать способы поддержания низкого давления памяти.
У меня есть несколько многомиллионных таблиц строк, и я создаю таблицы TEMP
(переменные, не входящие в таблицу) для хранения данных во время обработки, используя один SELECT * FROM temp..table
в конце SP.Это обеспечивает потоковую передачу данных с сервера, как ожидается, и использует минимальный объем памяти.