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 млн оно в ночном режиме вставится.
--
Андрей Кручинин