![]() |
|
Модераторы: skyboy |
![]()
|
|
| Дшпыук |
|
|||
|
Не сплю ![]() Профиль Группа: Участник Сообщений: 55 Регистрация: 4.3.2010 Где: Омск Репутация: нет Всего: 1 |
Нужно вставить в базу много значений(1-15мегабайт). Вопрос, как лучше(быстрее, оптимальнее) реализовать.
1) Циклом закилываем в базу по одному INSERT`ы 2) Циклом склеиваем большую строку INSERT`ов и одним запросом кидаем в базу 3) Одним запросом вида INSERT INTO table (row1...rowN) VALUES(row1...rowN),(row1...rowN)... Благодарю заранее за потраченое время) |
|||
|
||||
| azesmcar |
|
|||
![]() uploading... ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 6291 Регистрация: 12.11.2004 Где: Армения Репутация: нет Всего: 211 |
||||
|
||||
| Zloxa |
|
|||
|
Чо? ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 3473 Регистрация: 12.9.2008 Репутация: 53 Всего: 161 |
Задавайте ясные и четкие вопросы
Добавлено через 1 минуту и 23 секунды у каждого из описанных Вами способов есть свои преимущества и свои ограничения Добавлено через 1 минуту и 46 секунд причем как приемущества, так и ограничения - весьма платформозависимы -------------------- Достоверно известно, что 89% людей доверяют статистике взятой с потолка |
|||
|
||||
| Дшпыук |
|
|||
|
Не сплю ![]() Профиль Группа: Участник Сообщений: 55 Регистрация: 4.3.2010 Где: Омск Репутация: нет Всего: 1 |
База данных PostgreSQL ОС Linux. Нужно синхронизировать бд между сервером и клиентом. =) Выбираю способ для этого. На самом деле интересно лишь, допустимо ли в данном случае пустить циклом INSERT`ы, или будут большие потери по сравнению с одним запросом?) Если чего то ещё не уточнил, то жду замечаний)
|
|||
|
||||
| Zloxa |
|
|||
|
Чо? ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 3473 Регистрация: 12.9.2008 Репутация: 53 Всего: 161 |
Увы, не являюсь экспертом по PG.
По тому только мои размышления. Каких издержек вы стремитесь избежать? Я исхожу из того, что вы стремитесь избежать издержек на разборе запросов Первый приведенный Вами способ позволяет использовать связанные переменные и подготовленные инструкции (prepared statements). Т.е. запрос парсится единожды и затем многократно выполняется для различных значений переменных. Думаю, постгр тут не является исключением и он поддерживает схожий функционал. Некоторые системы, например oracle, умеют и вовсе принимать в качестве связанных переменных массивы значений. Изучите, есть ли такая возможность в постгре. Мне кажется из приведенных Вами способов, первый - самый предпочтительный. -------------------- Достоверно известно, что 89% людей доверяют статистике взятой с потолка |
|||
|
||||
| Akina |
|
|||
|
Советчик ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 20581 Регистрация: 8.4.2004 Где: Зеленоград Репутация: 45 Всего: 454 |
Эта фраза наводит на мысль, что мы имеем две БД и соответственно два сервера БД - локальный и удалённый... Это так или нет? -------------------- О(б)суждение моих действий - в соответствующей теме, пожалуйста. Или в РМ. И высшая инстанция - Администрация форума. |
|||
|
||||
| Дшпыук |
|
|||
|
Не сплю ![]() Профиль Группа: Участник Сообщений: 55 Регистрация: 4.3.2010 Где: Омск Репутация: нет Всего: 1 |
||||
|
||||
| Akina |
|
|||
|
Советчик ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 20581 Регистрация: 8.4.2004 Где: Зеленоград Репутация: 45 Всего: 454 |
-------------------- О(б)суждение моих действий - в соответствующей теме, пожалуйста. Или в РМ. И высшая инстанция - Администрация форума. |
|||
|
||||
| Дшпыук |
|
|||
|
Не сплю ![]() Профиль Группа: Участник Сообщений: 55 Регистрация: 4.3.2010 Где: Омск Репутация: нет Всего: 1 |
||||
|
||||
| Akina |
|
|||
|
Советчик ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 20581 Регистрация: 8.4.2004 Где: Зеленоград Репутация: 45 Всего: 454 |
В таком случае я не понимаю, почему надо ставить в кривую позу клиента, когда у постгре есть такая фигня как репликация?
Клиенту достаточно только проинструктировать серверы, с кем и что синхронизировать, с какими учётными данными, что делать при коллизиях и пр., и дальше пусть серверы сами договариваются. Не надо делать работу сервера БД в клиентской части. -------------------- О(б)суждение моих действий - в соответствующей теме, пожалуйста. Или в РМ. И высшая инстанция - Администрация форума. |
|||
|
||||
| Дшпыук |
|
|||
|
Не сплю ![]() Профиль Группа: Участник Сообщений: 55 Регистрация: 4.3.2010 Где: Омск Репутация: нет Всего: 1 |
Удалённый сервер пока работает на MySQL и эта синхронизация есть временная мера)
|
|||
|
||||
| Akina |
|
|||
|
Советчик ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 20581 Регистрация: 8.4.2004 Где: Зеленоград Репутация: 45 Всего: 454 |
В таком случае не будет ли более разумно выгрузить данные в файл, передать его на удалённый сервер и там загрузить?
-------------------- О(б)суждение моих действий - в соответствующей теме, пожалуйста. Или в РМ. И высшая инстанция - Администрация форума. |
|||
|
||||
| Дшпыук |
|
|||
|
Не сплю ![]() Профиль Группа: Участник Сообщений: 55 Регистрация: 4.3.2010 Где: Омск Репутация: нет Всего: 1 |
Сейчас что то подобное и реализуется) Данные в виде сериализованного массива ПХП пишутся в файл и на другом сервере парсятся и льются в бд. или есть более верный вариант?.. Дело в том что у баз разная структура, опять же пока, и до тех пор пока всё не будет под управлением одной бд приходится ставить костыли.
|
|||
|
||||
| Akina |
|
|||
|
Советчик ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 20581 Регистрация: 8.4.2004 Где: Зеленоград Репутация: 45 Всего: 454 |
А почему нельзя сразу выгрузить в файл, пригодный для загрузки через LOAD DATA INFILE? ведь тебе же по барабану, в какой форме выгружать на ПХП? и поройся в справке по постгре - может, там и выгрузка в файл подходящей структуры средствами СУБД найдётся... -------------------- О(б)суждение моих действий - в соответствующей теме, пожалуйста. Или в РМ. И высшая инстанция - Администрация форума. |
|||
|
||||
| Дшпыук |
|
|||
|
Не сплю ![]() Профиль Группа: Участник Сообщений: 55 Регистрация: 4.3.2010 Где: Омск Репутация: нет Всего: 1 |
Akina, насчёт выгрузки средствами СУБД я думал, но так как таблы имеют разную структуру это проблематично, а вот кормить базу файлами через LOAD DATA INFILE можно попробовать =) благодарю за советы.
|
|||
|
||||
![]()
|
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | Составление SQL-запросов | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |