После тестирования библиотеки activerecord-import для массовой вставки я обнаружил, что она не выполняет одну огромную INSERT
но много мелких INSERTs
Xml.import(
insert_values,
ignore: true,
validate: false,
batch_size: 1000
)
# =>
INSERT INTO `xmls` (`path`,`import_id`,`status`,`last_modified`,`created_at`,`updated_at`) VALUES ('test-folder/0_0.xml',114,10,'2019-08-16 20:02:20','2019-08-16 20:02:20','2019-08-16 20:02:20')
INSERT INTO `xmls` (`path`,`import_id`,`status`,`last_modified`,`created_at`,`updated_at`) VALUES ('test-folder/0_1.xml',114,10,'2019-08-16 20:02:20','2019-08-16 20:02:20','2019-08-16 20:02:20')
#...
INSERT INTO `xmls` (`path`,`import_id`,`status`,`last_modified`,`created_at`,`updated_at`) VALUES ('test-folder/0_2.xml',114,10,'2019-08-16 20:02:20','2019-08-16 20:02:20','2019-08-16 20:02:20')
Я пробовал установить insert_values
как массив XML.new
, а также как чистый массив массивов:
cols = [:path, :import_id, :status, :last_modified]
insert_values = [
[ 0] [
[0] "test-folder/0_0.xml",
[1] 115,
[2] 10,
[3] Sat, 17 Aug 2019 05:37:02 EDT -04:00
],
[ 1] [
[0] "test-folder/0_1.xml",
[1] 115,
[2] 10,
[3] Sat, 17 Aug 2019 05:37:02 EDT -04:00
],
#...
]
Xml.import(
cols,
insert_values,
ignore: true,
validate: false,
batch_size: 1000
)
Кто-нибудь знает, почему это работает таким образом? В документации ничего не нашел.
Xml.import(cols, insert_values, validate: false)
- person demir   schedule 18.08.2019INSERTs
- person Sasha B.   schedule 19.08.2019