2013-04-07 2 views
1

У меня есть прецедент, в котором большое количество данных иногда содержит миллионы строк, добавленных во временную таблицу (глобальная таблица сеансов сеанса) и таблица, которая должна быть соединена с другой таблицей для создания результаты/график/Heatmap. Данные представляют собой текстовые файлы или могут поступать из именованного канала/потока/сокета. SQLLDR не будет вариантом, поскольку это временная таблица.oracle pl/sql Загрузка больших данных в таблицу temp

Есть ли у вас предложения относительно того, как это можно сделать эффективно. В настоящее время оператор SQL выглядит следующим образом:

insert into tempipdata (IP) 
select gutils.ip2long('100.0.59.165') FROM DUAL UNION 
select gutils.ip2long('100.1.117.161') FROM DUAL UNION 
select gutils.ip2long('100.23.117.161') FROM DUAL; 

Любые предложения. Я могу получить данные IP-адреса из сокета или stdin вывода программы.

Благодаря Виджай

+0

Почему вы не идете на вложенные таблицы Oracle? Создание, заполнение и удаление больших временных таблиц может фрагментировать ваши табличные пространства. – Rachcha

+0

@ Rachcha - вставка миллиона строк в коллекцию PL/SQL может создать огромную нагрузку на PGA. Иногда временная таблица - правильное решение. – APC

ответ

4

Для доступа к данным из ОС подать ваше лучшее решение было бы внешние таблицы. Это как обычные таблицы, только данные поступают из файлов CSV (или любых других). Поэтому мы можем использовать SQL против них. Это лучшее решение, чем временные таблицы, потому что вам не придется сначала загружать данные: вы можете сразу выбрать его. Find out more.

+0

Hmm .. Внешние таблицы не будут отличной идеей. Как это устроено, по крайней мере, система 3-trie DB-> App-> Web-сервиса. Пользователь, который вводит/выгружает свои данные (IP-адрес в этом случае), должен будет сделать это в той же системе, что и база данных, которая обычно не рассматривается как масштабируемая. Данные не нужны или не полезны после завершения запроса объединения и построения графика/графика/тепловой карты. Таким образом, он хорошо подходит для временной таблицы, основанной на сеансах. – Vijay

+0

Я думаю, что мне нужно просто ограничить таблицу темп примерно 100 000 строк и разбить большой запрос пользователя на трех рабочих и использовать мой сервер приложений для объединения результатов и разработки графика/графика/и т. Д. – Vijay

Смежные вопросы