Мы работаем с Phing Задачей dbdeploy для выполнения контроля версий наших баз данных PostgreSQL, что в целом является хорошим способом работы.У меня нет особых проблем с версиями базы данных после того, как мы начали работать с ней, кроме одного мучительного сомнения: как мы контролируем данные, содержащиеся в базе данных?
Прямо сейчас у меня обычно есть дельтаон содержит некоторые примеры данных, которые используются для тестирования, но в производственной среде я хочу иметь производственные данные, например, действительные действительные данные.Конечно, я мог бы написать другую дельту, которая усекает тестовые данные и вставить фактические данные, но почему-то это кажется неуклюжим и громоздким, поскольку единственным языком в дельте является SQL.При написании такой дельты обработка последовательностей и проверка правильности отношений внешнего ключа - это настоящая боль.
Поэтому я подумал, что может иметь смысл написать скрипт PHP, который будет импортировать данные, скажем, из CSVфайл.Это будет работать, пока не произойдет другое изменение базы данных, которое переименует столбец, что сделает файл PHP бесполезным.Конечно, это легко исправить, обновив сценарий, включив в него изменения базы данных, и повторно запустив сценарий, но это подвержено ошибкам, и именно поэтому я и начал использовать dbdeploy.
Итак, мой вопрос:как вы обрабатываете данные при развертывании изменений или, более точно, как вы вставляете данные, необходимые для рабочей среды?