Модераторы: Akella
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Быстрое копирование данных, InterBase 
:(
    Опции темы
mspuz
Дата 20.3.2006, 18:14 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 304
Регистрация: 20.6.2005
Где: Ногинск

Репутация: нет
Всего: нет



У меня есть таблица, которая находится в одной БД и есть таблица в другой БД. Я делаю запрос в первую из них и далее в цикле делаю такие операции
Код
IBTable1.Edit;
IBTable1.Insert;
IBTable.FieldValue['pole1'] := IBQuery1.FieldValue['pole1'];
IBTable.FieldValue['pole2'] := IBQuery1.FieldValue['pole2'];
IBTable.FieldValue['pole3'] := IBQuery1.FieldValue['pole3'];
и т.д.
IBTable1.Post;

Проблема в том, что там 55 000 записей и это довольно медленно копируется smile . Есть способы переноса данных побыстрее???
PM MAIL   Вверх
chief39
Дата 20.3.2006, 19:16 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


карманная тигра
***


Профиль
Группа: Участник Клуба
Сообщений: 1631
Регистрация: 20.5.2005
Где: Киев

Репутация: нет
Всего: 77



То есть ты делаешь это через делфи?

Есть вариант. Не помню есть ли такое в IB....
Что-то вроде "удалённых серверов". Регистрируешь такую базу и работаешь с её таблицами как с местными.
То есть:

insert into myRemoteServer.remoteDB.mytable(.....)
select .... from mytable.

Покопай доку в этом направлении - должно быть и в IB такое


--------------------
Люди - это свечи. Они либо горят, либо их - в жопу!(с)

PM MAIL   Вверх
LSD
Дата 20.3.2006, 21:03 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Leprechaun Software Developer
****


Профиль
Группа: Модератор
Сообщений: 15718
Регистрация: 24.3.2004
Где: Dublin

Репутация: 1
Всего: 538



Модератор: перенесено из Общие вопросы по базам данных


--------------------
Disclaimer: this post contains explicit depictions of personal opinion. So, if it sounds sarcastic, don't take it seriously. If it sounds dangerous, do not try this at home or at all. And if it offends you, just don't read it.
PM MAIL WWW   Вверх
Dimyan
Дата 21.3.2006, 08:52 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 441
Регистрация: 12.1.2004
Где: Новосибирск

Репутация: нет
Всего: 4



Цитата(LSD @ 21.3.2006, 01:03)
Модератор: перенесено из Общие вопросы по базам данных

Имеет смысл перенести это в раздел Делфи, т.к. IB\FB не поддерживает гетерогенные запросы!


--------------------
Как хорошо ничего не делать, а потом еще немного отдохнуть :)
PM MAIL ICQ   Вверх
Alex
Дата 23.3.2006, 02:07 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Экс. модератор
Сообщений: 4147
Регистрация: 25.3.2002
Где: Москва

Репутация: 7
Всего: 162



Быстрее способ построить это все на sql запросах и транзакцию на запись открыть в начале добавлений, а подтвердить ее после всех добавлений. В вашем примере ibtable подтверждает транзакцию каждый раз как вы делаете post это подтверждение и занимает у вас основное время при добавлении
Добавлено @ 02:10
О том какого ускорения можно ожидать можите прочитать здесь http://forum.vingrad.ru/index.php?showtopic=55541


--------------------
Написать можно все - главное четко представлять, что ты хочешь получить в конце. 
PM Skype   Вверх
Linco
Дата 23.3.2006, 16:08 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 8
Регистрация: 14.2.2006

Репутация: нет
Всего: нет



Во первых используйте компоненты помощнее типа FIBPlus
во вторых в их составе и в составе IBX по-моему есть специальные компоненты BatchXXX для копирования больших объемов данных
в третьих, действительно, лучше делать commit транзакции не после каждой записи а после 500/1000 записей.
В четвертых через SQL не скопируешь ибо нет гетерогенных запросов.

Это сообщение отредактировал(а) Linco - 23.3.2006, 16:09
PM MAIL   Вверх
Dynamic
Дата 24.3.2006, 08:45 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 372
Регистрация: 5.7.2004
Где: Салехард

Репутация: 1
Всего: 15



Код

IBTable1.Edit;
IBTable1.Insert;
это зачем?


--------------------
Было бы о чем молчать, а уж что сказать – всегда найдется...
PM MAIL WWW   Вверх
AZDesign
Дата 31.3.2006, 09:51 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 11
Регистрация: 24.6.2005

Репутация: нет
Всего: нет



Я делаю еще проще:
Пишу маленькую процедуру, которая сохраняет таблицу в SQL-скрипт, а потом вставляю его в другую БД с помощью isql.exe
Для этого метода 55000 записей - это вообще копейки
Только что вставил 23000000 (23 млн) записей без проблем.
Для скрипта есть еще полезные свойства:
- возможность переформатировать(перестроить) запись
- при наличии ошибок, например, нарушение уникальности, скрипт отметить ее и пойдет дальше.
PM MAIL   Вверх
Akella
Дата 4.5.2006, 09:34 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Творец
****


Профиль
Группа: Модератор
Сообщений: 18485
Регистрация: 14.5.2003
Где: Корусант

Репутация: 20
Всего: 329



Цитата

IBTable1.Edit;
IBTable1.Insert;

и действительно, ЗАЧЕМ??? smile  
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Interbase"
Alex

Обязательно указание:

1. Версию InterBase (Firebird, Yaffil)

2. Способа доступа (ADO, BDE, IBX и т.д.)

  • КАК ПРАВИЛЬНО ОФОРМИТЬ КОД - ЗДЕСЬ
  • КАК ПРАВИЛЬНО УКАЗАТЬ ТЕКСТ ОШИБКИ - ЗДЕСЬ
  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • FAQ раздела лежит здесь!

Если Вам понравилась атмосфера форума, заходите к нам чаще! С Уважением, Akella.

 
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Firebird, Interbase | Следующая тема »


 




[ Время генерации скрипта: 0.1144 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.