powered by simpleCommunicator - 2.0.59     © 2025 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / MySQL [игнор отключен] [закрыт для гостей] / INSERT большого количества строк
4 сообщений из 4, страница 1 из 1
INSERT большого количества строк
    #39658368
TITnet
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Мне нужно сделать INSERT относительно большого количества строк (порядка 1 000 000 записей) из кода.
Есть два варианта.

1. В коде подготовить одну длинную строку-запрос.
Код: ruby
1.
2.
3.
4.
5.
6.
insert = 'INSERT INTO table_name (name, phone_number, department, position) VALUES ' 
values = Array.new
rows.each do |row|
  values.push "('#{row[:name]}', '#{row[:phone_number]}', '#{row[:department]}', '#{row[:position]}')"
end
query = insert + values.join(', ')


В итоге получаем в query длинную строку с «чистым» запросом, которую отправляем в БД через client.query(query);

2. Делаем через statement/execute n-ое количество раз (по числу записей).
Код: ruby
1.
2.
3.
4.
5.
sql = 'INSERT INTO table_name (name, phone_number, department, position) VALUES (?, ?, ?, ?)'
statement = mysql_client.prepare(sql)
rows.each do |row|
  statement.execute(row[:name], row[:phone_number], row[:department], row[:position])
end



Что, кроме приведённых мною данных влияет на выбор варианта?
Добавлю, что запрос не «production», и будет выполняться раз в месяц.
...
Рейтинг: 0 / 0
INSERT большого количества строк
    #39658374
Фотография Akina
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Вариант 3 - собирается длинная строка как в варианте 1, но на 1000 записей, и отправляется на сервер. И так 1000 раз. Скорее всего такой вариант будет более щадящим (особенно по отношению к нервам других пользователей), и уж точно быстрее второго.

Вариант 4 - вся эта ерунда сливается в CSV-файл, и простейшим запросом LOAD DATA INFILE заливается в таблицу. Почти наверняка наиболее быстрый вариант.
...
Рейтинг: 0 / 0
INSERT большого количества строк
    #39658449
Фотография ScareCrow
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Transportable Tablespace ?
...
Рейтинг: 0 / 0
INSERT большого количества строк
    #39658456
TITnet
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Akina, спасибо!

AkinaВариант 3 - собирается длинная строка как в варианте 1, но на 1000 записей, и отправляется на сервер. И так 1000 раз. Скорее всего такой вариант будет более щадящим (особенно по отношению к нервам других пользователей), и уж точно быстрее второго.

Спасибо, об этом не подумал, именно так и поступлю.

AkinaВариант 4 - вся эта ерунда сливается в CSV-файл, и простейшим запросом LOAD DATA INFILE заливается в таблицу. Почти наверняка наиболее быстрый вариант.

Увы, по некоторым причинам — такой вариант невозможен.
...
Рейтинг: 0 / 0
4 сообщений из 4, страница 1 из 1
Форумы / MySQL [игнор отключен] [закрыт для гостей] / INSERT большого количества строк
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]