26.09.2011 0:47, Юрий пишет:
Здравствуйте.
Ежемесячно нужно переносить данные между несколькими удаленными
базами. От одной большой БД на могучем сервере на удаленные сервера,
которые слабее.
Данные это таблица с 10-ом млн. записей.

Я это ежедневно делаю :-) По нескольку раз в день.

Быстрее всего и удобно автоматизировать если:
1. удаляем старую внешнюю таблицу
2. смотрим структуру таблицы в базе, создаем аналогичную внешнюю
3. выкачиваем данные во внешнюю таблицу, удаляем таблицу
4. архивируем файл ;
5. передаем файл, ;
6. распаковываем;
7. отключаем триггеры;
8. закачиваем через insert or update;
9. включаем триггеры, удаляем внешнюю таблицу.
Было бы очень хорошо, если бы можно было удалить внешнюю таблицу (п.1)
вместе с файлом, т.к. иначе:
- нужно создавать уникальные названия для файла

Перезаписать файл с внешней таблицей оно как - никак? Если коннектов к ней нет то при распаковке произойдет замена.

- можно забить диск сервера

Я полистал Трекер, нашел пару аналогичных пожеланий, но обсуждения
встало из-за вопросов безопасности.
Но разве это так критично, если сделать параметр в firebird.conf, для
включения такой функции, и если задан конкретный путь в
ExternalFileAccess ?
Насколько я понимаю никто этого делать и не будет, т.к. не дело сервера работать с внешними файлами. Если надо что-то такое сделать - UDF и вперед.

Как вариант можно еще отработать с 2.5 с коннектом из ХП к примеру. тоже работает, может не так шустро, но 10 млн оно в ночном режиме вставится.

--
Андрей Кручинин


Ответить