2013-11-18 6 views
2

Я хочу знать, что лучший подход вставки нескольких строк в базе данных:Вставка нескольких строк в базе данных

  1. Используя один запрос, чтобы сделать это или
  2. for(int x = 0; x < y.length; x++) { insertRowsIntoDatabase(valuesHere); }
  3. Или вы, ребята, есть еще один подход ? Поделись, пожалуйста.

Мои данные состоят из 8 столбцов и 50 строк.

+4

с помощью одного запроса –

+0

Почему вы не запускать некоторые синхронизированные тестовые случаи и видеть? –

ответ

1

Вы можете использовать bulk insert

сохранить все значения в текстовом файле и использовать.

BULK INSERT STUDENT 
FROM ‘D:\STUDENTS_LIST.txt’ 
WITH (FIELDTERMINATOR = ‘,’, ROWTERMINATOR = ‘\n’) 
+0

Это быстрее, чем когда оно жестко закодировано? – user2785929

+0

проверить это http://venzi.wordpress.com/2012/03/31/loading-data-fast-regular-insert-vs-bulk-insert/ –

+0

Это отличная помощь благодаря ссылке – user2785929

2

Лучше всего было бы сделать пакетные вставки вместо вставки строк 1 на 1.

for (String query : queries) { 
    statement.addBatch(query); 
} 
statement.executeBatch(); 
+0

Это лучше, чем один запрос? – user2785929

+0

Производительность мудрая, не очень уверенная (потому что внутри, даже единственный запрос, * МОЖЕТ * вставлять это много раз, как количество строк), но читаемость мудрая, это определенно лучше. – SudoRahul

1

да, вы можете написать только один запрос, чтобы вставить все значение:

String query="insert into table1 (First,Last) values"; 
for(; ;) 
{ 
    query=query+"('Fred','Smith'),"; 
} 
-----You can write your database insertion code here---- 

Или вы можете использовать addBatch() и executeBatch(); Метод также ......

Plz refer this link for read more about addBatch() Method

1

Всегда используйте один запрос, когда вы можете. Это имеет несколько преимуществ:

  • Меньшее подключения к СУБД, уменьшая доступ к сети и другие вещи, сделанные при подключении к серверу (даже если он находится на том же компьютере, что и программа)
  • Лучше оптимизация запрос. СУБД лучше, чем вы, при оптимизации. Всегда. Выполнение нескольких запросов будет препятствовать процессу оптимизации СУБД, даже при использовании систем кэширования.

В любом случае, 8 столбцов и 50 строк очень быстро и легко обрабатываются для любой СУБД, но ваши данные могут расти позже, поэтому вы хотите использовать лучший подход.

0

Рассмотрим с использованием одного Prepared Statement Batch, с несколькими наборами данных в качестве партии.

(Примечание: Не все драйверы JDBC может поддерживать это и точно следовать спецификации.)

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