Використання зв'язки Ant та mysql | ||||
|
Розробник |
Дуже часто виникає задача перенесення баз даних з однієї машини на іншу чи синхронізація з іншими машинами. Для цього я спробую написати два таргета для імпорта та ексорта даних. Зауважу, що при написанні такого таргета я зустрівся з запитаннями: як можна змінити властивість (property) в самому анті? коли потрібно виконати один і тойже таск, але з різними значеннями. А ніяк... Просто не використовувати property для речей, які можуть змінюватися краще готувати таргети, які приймають параметри і у них передавати уже потрібні змінні значення. Ітак, експорт даних або дамп бази можна зробити наступним чином: по-перше, результат виконання ми отримаємо у файлі назва якого міститься у змінній output не використовуючи перенаправлення потоків вводу виводу; а по-друге, усі параметри розділені по різних тегах. Так не тільки зрозуміліше, але й набагато зручніше модифікувати.Зазвичай це ми робимо з командної лінії так: mysqldump -h127.0.0.1 -udevuser -pdevuser devuser_base > dev.sql В ант таргеті це виглядає так: <!-- Експорт структури бази та данних --> Імпорт проходить за схожою схемою, окрім того, що дані вводять уже не з потока, а з файла, шлях до якого знаходиться в змінній input. Зазвичай це ми робимо з командної лінії так: mysql -h127.0.0.1 -udevuser -pdevuser devuser_base < dev.sql В ант таргеті це виглядає так: <!-- Імпорт структури бази та данних --> А тепер існуючий таргет можна використати таким чином (не одиноразово ще й з різними параметрами): <antcall target = "_create_dump_database"> і причому викликати декілька раз, а з різними параметрами, що було б неможливо, якби ми користувалися глобальними об'явленими параметрами, використовуючи тег property, як роблять зазвичай. А от dbDev.host уже може бути об'явлена як property. |
Останнє оновлення ( Вівторок, 30 березня 2010, 21:15 ) |