Форум программистов, компьютерный форум, киберфорум
PHP для начинающих
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.69/13: Рейтинг темы: голосов - 13, средняя оценка - 4.69
23 / 23 / 9
Регистрация: 24.04.2010
Сообщений: 220
1

Вставка массива в БД

10.11.2013, 19:30. Показов 2414. Ответов 9
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Всем привет!) Понадобилось мне занести массив в бд MySQL. Записей в массиве очень много и возник вопросом можно ли занести массив в БД одним запросом? Если да, то как это правильно сделать?
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
10.11.2013, 19:30
Ответы с готовыми решениями:

Одномерные массивы. Вставка, удаление элементов массива. Перестановка элементов массива. Сортировка массива методом пузырька
Помогите пожалуйста! Дан массив, состоящий из N букв латинского алфавита а) Заполнить массив...

Сумма элементов массива, равных первому элементу массива (Ассемблерная вставка с++)
помогите кто может, или просто дайте код где в асемлерной вставке используют масив, дальше разберусь

Вставка элемента массива в любое место массива
Добрый вечер, имеется динамический одномерный массив из которого удален один элемент, подскажите...

Вставка из массива
Подскажите пожалуйста, как сделать примерно следующее: $body = preg_replace('/<a...

9
ищите меня в нирване
36 / 36 / 5
Регистрация: 23.10.2013
Сообщений: 198
10.11.2013, 19:50 2
Цитата Сообщение от Mogul-kan Посмотреть сообщение
можно ли занести массив в БД одним запросом? Если да, то как это правильно сделать?
Правильно -никак. Это не типичная задача для веб приложения, поэтому следует сформировать sql скрипт загрузки или массив csv, с помощью того же php, или вообще на настольном приложении, а потом сделать загрузку средствами базы данных...
0
127 / 127 / 25
Регистрация: 20.11.2009
Сообщений: 498
11.11.2013, 10:01 3
Цитата Сообщение от Mogul-kan Посмотреть сообщение
можно ли занести массив в БД одним запросом?
Можно, но ограниченное количество записей, у меня лично один INSERT не добавляет больше 500 записей за раз,
поэтому рекомендую разбивать на несколько запросов в случае большого количества данных
Ну и конечно если вам по отдельности данные не нужны ни для выборок, ни вообще, то можно хранить серелизованный массив (не особо приветствуется)
0
5 / 6 / 0
Регистрация: 26.10.2013
Сообщений: 118
11.11.2013, 11:53 4
Вообще-то говоря в вашем вопросе мало данных о задаче...

Что вы хотите сделать? Занести все записи массива в одно поле какой-то записи БД? Или каждую ячейку массива в своё поле???
Если второе, то я делал так:
SQL
1
INSERT `имя_таблицы` (`имя_поля_1`,`имя_поля_2`,`имя_поля_3`) VALUES (`значение_1`,`значение_2`,`значение_3`), (`значение_2.1`,`значение_2.2`,`значение_2.3`), (`значение_3.1`,`значение_3.2`,`значение_3.3`) ...
Таким образом вставлялось около 7000 строк, больше просто не возникало нужды.
Возможно есть какие-то настройки сервера ограничивающие колличество вставляемых записей в БД..? В противном случае я просто не понимаю, что мешало вандал вставлять больше 500 записей...
1
127 / 127 / 25
Регистрация: 20.11.2009
Сообщений: 498
11.11.2013, 14:03 5
Dozentos, ну да что-то ограничивает, что именно я тоже сказать не могу
0
28 / 28 / 3
Регистрация: 18.12.2010
Сообщений: 158
11.11.2013, 14:28 6
Dozentos, такая схема мне знакома. Меня как раз надо вставить каждую ячейку массива в своё поле. Я думал как упростить эту задачу снизив нагрузку на сервер. На мой взгляд оптимальный выход такой: занести весь массив в csv файл в виде:
MySQL
1
INSERT `имя_таблицы` (`имя_поля_1`,`имя_поля_2`,`имя_поля_3`) VALUES (`значение_1`,`значение_2`,`значение_3`), (`значение_2.1`,`значение_2.2`,`значение_2.3`), (`значение_3.1`,`значение_3.2`,`значение_3.3`) ...
Потом открыть его выполнить 1 запрос, добавиться все разом. Есть ли вариант получше?
0
112 / 112 / 18
Регистрация: 24.09.2013
Сообщений: 509
11.11.2013, 16:55 7
Mogul-kan, почитайте вот эту статью: http://ruseller.com/lessons.php?rub=37&id=699
1
28 / 28 / 3
Регистрация: 18.12.2010
Сообщений: 158
11.11.2013, 17:11 8
Web_Master, интересно
0
112 / 112 / 18
Регистрация: 24.09.2013
Сообщений: 509
11.11.2013, 17:15 9
_масяня_, правда я пробовал хранить массив состоящий из 2900 значений и у меня не получалось вытащить данные обратно из бд. Незнаю в чем была проблема, но я от идеи хранить массив в бд отказался.
0
5 / 6 / 0
Регистрация: 26.10.2013
Сообщений: 118
13.11.2013, 10:16 10
_масяня_, с csv файлами я сталкивался только при импорте данных их 1С в каталог интернет-магазина. Записи в БД обычно вставляю php скриптом. Для выполнения вашей задачи я бы перебрал массив в цикле сформировав строку запроса. Вроде проще некуда..?
В принципе, если вам нужно вставлять много записей в БД не часто, то необязательно пользоваться этим приёмом. Сервер не сильно "устанет" выполнив несколько запросов вместо одного. Время выполнения тоже не будет заметно отличаться.
Другое дело, если требуется часто добавлять или изменять множество строк... да ещё, если это счастье даровано пользователям, которые делают это, естественно, с разных, удалённых машин. В таком случае, конечно, желательно максимально сократить время запроса к БД.

Ещё касаемо ограничений на один запрос вспомнилось, что он не должен превышать максимального размера для передачи по протоколу HTTP. По-моему 8 Мб. Возможно это мешало вандалу...
1
13.11.2013, 10:16
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
13.11.2013, 10:16
Помогаю со студенческими работами здесь

вставка массива А в В
Заданы массивы целых: упорядоченный за не наростанием чисел A(n+m), неупорядоченный – B(m),...

Вставка элементов массива 2
Вставить заданное число в массив после всех отрицательных элементов. Добавлено через 23 минуты...

вставка элементов массива
Вставить в массив два заданных числа: первое после любого из максимальных элементов, второе – перед...

Вставка массива в mysql
Доброго времени суток, подскажите пожалуйста как решить проблему, мне нужно чтобы каждый элемент...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
10
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru