|
|
|
|
|
для: Trianon
(10.01.2014 в 02:54)
| | Ну да, но я скорее о не тождественности самого механизма. | |
|
|
|
|
|
|
|
для: confirm
(09.01.2014 в 23:32)
| | тут Вы утрируете несколько.
ON DUPLICATE KEY .. UPDATE позволяет и обновлять строки пакетом. | |
|
|
|
|
|
|
|
для: confirm
(09.01.2014 в 23:54)
| | Еще раз спасибо, за разъяснение! | |
|
|
|
|
|
|
|
для: clubxaliav
(09.01.2014 в 23:35)
| | При чем тут обновление? Вы изначально спрашивали о вставке большого массива данных, как это лучше сделать и по чему надо обязательно ориентироваться вам и было рассказано.
Обновление одним запросом для многих строк сразу так же "кучей" как и вставку можно сделать только тогда, когда у всех строк данные одинаковы. Обновлять придется построчно, ничего делить не надо. Если у вас есть таблица с М числом записей, и вам надо обновить все эти М записей, то тогда вместо обновления можно очистить таблицу, а потом сделать вставку как рассказано выше.
И вообще, по всем этим вопросам в раздел MySQL, объяснив конкретно чего и при каких условиях обновлять, и т.п. | |
|
|
|
|
|
|
|
для: confirm
(09.01.2014 в 23:32)
| | Т.е для обновления придется делить файл в ручную, чтобы не превысить размер максимального пакета? | |
|
|
|
|
|
|
|
для: clubxaliav
(09.01.2014 в 23:24)
| | Обновление, это иная операция, подобного для нее нет. | |
|
|
|
|
|
|
|
для: confirm
(09.01.2014 в 23:14)
| | А если обновлять данные товары опять тем же файлом, где 10000 товаров - UPDATE можно реализовать упрощенно? | |
|
|
|
|
|
|
|
для: clubxaliav
(09.01.2014 в 23:08)
| | Ну а куда же еще его вставлять? Перед подготовкой данных получаете установку сервера этим скриптом. Значение в байтах, это тоже самое что и длина строки, которая тоже выражается в байтах для ASCII. Если данные в UTF, то это надо учитывать при контроле. | |
|
|
|
|
|
|
|
для: confirm
(09.01.2014 в 22:57)
| | Многострочный INSERT буду пробывать, спасибо за направление.
А вот по максимальному размеру пакета, этот скрипт оставить без изменений, вставить на страницу с выполнением запроса, он тупа покажет максимум для загрузки, правильно я понял? | |
|
|
|
|
|
|
|
для: clubxaliav
(09.01.2014 в 22:16)
| | Вставлять в базу тысячи строк как foreach() { insert } это очень плохо. Но есть многострочный вариант вставки: INSERT INTO tbl (field1,field2,...,fieldN) VALUES (value1,value2,...,valueN), (value1,value2,...,valueN),...,(value1,value2,...,valueN)
Поэтому, в цикле нужно не базу гонять, а приготовить строки данных для многострочной записи, а затем уже их вставить в базу. Какой длины будет каждая строка (value1,value2,...,valueN), (value1,value2,...,valueN),...,(value1,value2,...,valueN) для одного цикла записи определяет размер ваших данных, и чтобы узнать этот допустимый размер, необходимо узнать выше показанным способом максимальный размер пакета для записи.
При подготовке данных к записи контролируйте длину их со всем обрамлением (кавычки где надо, скобки, запятые...) по этой установке сервера. Если все ваши данные не превысят этот установленный размер, то запрос к базе будет всего один, иначе несколько, но гораздо меньше чем тысяча. | |
|
|
|
|