2016-12-01 2 views
2

я видел во многих местах хороший подход, чтобы вставить несколько строк в Oracle выглядит следующим образом:Вставка нескольких строк

INSERT INTO mytable ("id", "name") VALUES ('val1', 'val2'); 
INSERT INTO mytable ("id", "name") VALUES ('aa', 'cc'); 
INSERT INTO mytable ("id", "name") VALUES ('ww', 'dd'); 

Но, в случае массовой вставки многих строк, это должно быть хорошими, учитывая, что мы выполняем отдельные запросы? Как насчет классической накладной проблемы в этих случаях многопроцессорности (создание сетей, синтаксический анализ, ...)?

Благодарим вас заранее!

ответ

1

Это действительно неэффективный способ вставки в таблицу. Точные формулировки вы иллюстрированные можно заменить

INSERT INTO mytable ("id", "name") 
    select 'val1', 'val2' from dual union all 
    select 'aa' , 'cc' from dual union all 
    select 'ww' , 'dd' from dual 
; 

Конечно, если таблица имеет более двух столбцов, остальные столбцы будут null (или значение по умолчанию для столбца, если это определено).

Даже лучше, значение вы вставляете уже в таблице какого-то, - то вы можете использовать один ЗЕЬЕСТ, возможно, с WHERE условиями, присоединяется и т.д.

2

Вы можете использовать INSERT ALL INTO (Documentation).

INSERT ALL 
    INTO mytable ("id", "name") VALUES ('val1', 'val2') 
    INTO mytable ("id", "name") VALUES ('aa', 'cc') 
    INTO mytable ("id", "name") VALUES ('aa', 'cc') 
SELECT 1 FROM DUAL; 
+0

Конечно, но не отвечает на мой вопрос! Но спасибо! – Alex

0

Вы можете вставить Select, если у вас уже есть dada в некотором объекте SQL, , но когда существует необходимость вставлять много информации, мы можем использовать другие методы, такие как send txt-файлы и делать объемную вставку, с 100 000 строк обычного текста в это время (2016) isn «Не слишком много путешествует за 1gb-сетью, нет проблем.

проверить это:

Use a Format File to Bulk Import Data (SQL Server)

Bulk Import and Export of Data (SQL Server)

Пример выбора вставки:

Insert into Table 
select id, column1, column2 from tempTable 

Это быстрее, чем INTO туЬаЫе ("ID", "имя") VALUES ('val1', 'val2') INTO mytable ("id", "name") VALUES ('aa', 'cc') INTO mytable ("id", "name") VALUES ('aa', 'cc')

ПРИМЕЧАНИЕ !!!!!!

SORRY !!! вы спрашиваете о ORACLE ... Я мог бы быть похож на ORACLE

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