как вставить большое количество строк в оракул?

Может ли кто-нибудь сказать мне, как вставить большое количество строк в Oracle?

Используя оператор вставки, мы можем вставлять данные в строки таблицы.

            insert into example values(1,'name','address');

Предположим, я хочу вставить 100 000 строк, нужно ли мне вставлять одну за другой, следуя приведенной выше процедуре? Или есть другой способ вставить большое количество строк за раз? Может ли кто-нибудь посоветовать мне пример, пожалуйста.

Примечание: здесь я не прошу копировать данные из другой таблицы.. просто представьте, что у нас есть лист XL, состоящий из 1 00 000 строк, а затем как мы можем вставить их в конкретную таблицу..

Спасибо, Сай.


person Sai    schedule 14.11.2013    source источник
comment
где находятся ваши исходные строки?   -  person Kirill Leontev    schedule 14.11.2013
comment
В наши дни даже сто тысяч — это не так уж много строк. Напечатать много, а загрузить не так много. Поэтому вам нужно предоставить нам более подробную информацию. Где сейчас исходные данные? Нужно ли применять процедуры очистки или проверки? Это разовое мероприятие или регулярный процесс? Что такое единица работы? Какая версия и редакция Oracle у вас есть? Любые другие ограничения (например, права доступа к каталогу, возможность создавать объекты базы данных и т. д.)?   -  person APC    schedule 14.11.2013
comment
Я хочу сказать, что у Oracle есть много разных способов массовой загрузки данных. Разные подходы подходят для разных сценариев.   -  person APC    schedule 14.11.2013


Ответы (3)


Я подозреваю, что у вас есть это в файле CSV.

  1. Создать объект каталога
  2. Создать внешнюю таблицу. Вы можете запрашивать внешнюю таблицу так же, как и обычную таблицу, разница в том, что данные в таблице берутся из файла, расположенного в объекте каталога.

http://www.oracle-base.com/articles/9i/external-tables-9i.php

person the_slk    schedule 14.11.2013

Если вы выполняете загрузку, используя отдельные операторы вставки из скрипта, скажем, с помощью SQL*Plus, то одним из удобных способов ускорения является объединение наборов вставок в анонимные блоки PL/SQL...

begin
  insert into example values(1,'name','address');
  insert into example values(1,'name','address');
  insert into example values(1,'name','address');
  ...
end;
/

begin
  insert into example values(1,'name','address');
  insert into example values(1,'name','address');
  insert into example values(1,'name','address');
  ...
end;
/

Это значительно уменьшает болтовню между клиентом и сервером.

Исходный файл часто можно легко изменить с помощью unix-скриптов или макросов в приличном текстовом редакторе.

Не обязательно то, что вы хотели бы внедрить в производственный процесс, но удобно для случайной работы.

person David Aldridge    schedule 14.11.2013

Используйте sqlldr с опцией прямого пути.

person steve    schedule 14.11.2013