Множественный update sql из 1с

1. user1840899 02.08.23 10:05 Сейчас в теме
Делаю множественный ins ert и update в одной строке, для сокрашения кода и его оптимизации. Сделал запрос и засунул данные в массив и с помощью его должен заполнять строки в sql, но выдает ошибку

{ОбщийМодуль.ЭкспортВMySQL.Модуль(30)}: Ошибка при вызове метода контекста (Execute): Произошла исключительная ситуация (Microsoft OLE DB Provider for ODBC Drivers): [MySQL][ODBC 8.0(a) Driver][mysqld-8.0.30]Column count doesn't match val ue count at row 1

Пишет, что разные количества стобцов, но все верно.
Подскажите в чем проблема
Прикрепленные файлы:
По теме из базы знаний
Ответы
В избранное Подписаться на ответы Сортировка: Древо развёрнутое
Свернуть все
2. user-z99999 65 02.08.23 10:37 Сейчас в теме
(1)
Прежде чем изгаляться оптимизацией, сделай просто инсерт в таблицу.

Как получиться, тогда вернешь первоначальный вариант.
Вначале, пойми в чём ошибка.
4. user1840899 02.08.23 10:40 Сейчас в теме
(2) Я уже делал инсерт и апдейт отдельно, все прекрасно работало
3. RustamZz 02.08.23 10:39 Сейчас в теме
(1) В INSERT 2 поля, а в VALUES не 2 поля. Вот и недоволен драйвер.
5. nomad_irk 67 02.08.23 10:47 Сейчас в теме
(1)
Пишет, что разные количества стобцов, но все верно.

Если пишет, значит так оно и есть.

На второй итерации цикла по выбоке в массиве будет 4 элемента и вы это каким-то чудесным образом пытаетесь запихать в два поля таблицы.
Т.е. текст запроса на второй итерации цикла будет иметь вид:
INS ERT IN TO <TableName>
(id_tag, id_events) VALUES(Значение1, Значение2, Значение3, Значение4) ON DUPLICATE KEY UPDATE......

а какое количество элементов в выборке - известно только вам.
6. user1840899 02.08.23 10:59 Сейчас в теме
(5)Так там не в цикле стоит
7. nomad_irk 67 02.08.23 11:01 Сейчас в теме
(6)что значит не в цикле? В цикле вы набиваете массив данными
Результирующая строка - за циклом, она будет содержать столько пар значений, сколько элементов в выборке.


INSERT не умеет разобраться со всеми значениями самостоятельно и выполнится один раз
нужно для каждой комбинации значений выполнять свой INSERT
Прикрепленные файлы:
8. laperuz 45 02.08.23 11:21 Сейчас в теме
(6)Замените МассивСлов.Добавить(Выборка.id_tag) на МассивСлов.Добавить("(" + Выборка.id_tag)
а МассивСлов.Добавить(Выборка.id_events) на МассивСлов.Добавить("," + Выборка.id_events + ")")

Тогда будет строка вида insert ((значение1, значение2), (значение3, значение4))
Так должно сработать
9. nomad_irk 67 02.08.23 11:52 Сейчас в теме
(8) В 1к текста сколько влезет элементов выборки? :)
10. laperuz 45 02.08.23 11:54 Сейчас в теме
(9) А это уже головная боль ТСа:)
11. user1973639 02.08.23 12:22 Сейчас в теме
Можно сохранить в фай и через BULK INSERT пакетно грузить.
Оставьте свое сообщение
Вакансии
1С-Программист (интегратор Битрикс24)
Санкт-Петербург
зарплата от 150 000 руб. до 250 000 руб.
Полный день

Разработчик 1С
Москва
зарплата от 100 000 руб.
Временный (на проект)

Разработчик 1С
Москва
зарплата от 150 000 руб.
Полный день

Программист
Санкт-Петербург
зарплата от 180 000 руб. до 240 000 руб.
Полный день

Разработчик 1С
Москва
зарплата от 150 000 руб. до 250 000 руб.
Полный день