Любые предложения о том, как извлечь 6 миллионов записей из oracle10g? - PullRequest
1 голос
/ 08 апреля 2010

Я просто хочу дать вам немного фона

  1. Необходимо написать PL-SQL, который извлечет 6 миллионов записей, соединяющих разные таблицы, и создаст файл этого.
  2. Нужно больше предложений, особенно о том, как получить эти многочисленные записи. Получение одного миллиона записей за один раз может потребовать очень много ресурсов. Итак, вопрос в том, как получить эти многочисленные записи?

Любой pl-sql будет высоко оценен.

Ответы [ 3 ]

1 голос
/ 08 апреля 2010

Вам нужно извлечь содержимое одной таблицы или результат JOIN? Нужно ли заказывать результат? Если это так, вы должны сначала оптимизировать свой запрос извлечения.

Как только у вас есть оптимальный запрос, вы можете либо SELECT напрямую (например, через sqlplus), либо записать во внешнюю (плоский файл) таблицу, либо использовать ODI.

0 голосов
/ 06 марта 2015

Я написал Java-программу для записи всех записей в файл. На моем избранном у меня было 20 потоков, и это работало как сон.

0 голосов
/ 13 апреля 2010

6 миллионов строк не так уж много. Просто напишите запрос и дайте оптимизатору сделать свое дело. Если ваша статистика актуальна, что также является автоматическим, она должна работать просто отлично. Попытка настроить его, вероятно, замедлит его работу, если вы не будете лучше разбираться в оптимизации запросов, чем команда инженеров Oracle.

Можно использовать только PL / SQL, если все ваши строки достаточно малы. Пакет UTL_FILE ограничит вас 32767 символами в строке с помощью команды PUT_LINE. Есть способ обойти это, но он требует копирования данных в BLOB.

Я бы предложил установить Python и cx_Oracle или Perl и DBD :: Oracle. Они без проблем пройдут 6 миллионов рядов без проблем. Значения по умолчанию настроены на выборку строк большого размера, чтобы снизить скорость передачи по сети.

Если вы дадите мне знать, как вы хотите продолжить, я могу опубликовать пример кода, но поиск в документации по cx_Oracle или DBD :: Oracle приведёт к основам того, как получать записи.

...