Лучшие практики при переносе данных из одной схемы базы данных в другую? - PullRequest
1 голос
/ 19 ноября 2009

Часто, когда я работаю над проектом, я сам смотрю на схему базы данных и вынужден экспортировать данные для работы с новой схемой.

Много раз существовала база данных, в которой сохраненные данные были довольно грубыми. Под этим я подразумеваю, что в нем хранится множество нефильтрованных символов. Я нахожу себя пишущим собственные php-скрипты, чтобы отфильтровать эту информацию и создать хороший чистый CSV-файл UTF-8, который я затем импортирую в свою новую базу данных.

Я хотел бы знать, есть ли лучшие способы справиться с этим?

Ответы [ 3 ]

1 голос
/ 25 ноября 2009

Я бы предложил использовать инструмент ETL или, по крайней мере, следовать правилам ETL при перемещении данных. Учитывая, что вы уже очищаете, вы можете следовать по всему пути ECCD - извлекать, очищать, согласовывать, доставлять. Если вы выполняете собственную очистку, рассмотрите возможность сохранения промежуточных файлов CSV для целей отладки и аудита.

1. Extract (as is, junk included) to file_1
2. Clean file_1 --> file_2
3. Conform file_2 --> file_3
4. Deliver file_3 --> DB tables

Если вы архивируете файлы 1-3 и версии документов ваших сценариев, вы сможете вернуться в случае ошибки.

Инструменты ETL - такие как Microsoft SSIS, Oracle Data Integrator, Pentaho Data Integrator - подключаются к различным источникам данных и предлагают множество задач преобразования и профилирования.

1 голос
/ 19 ноября 2009

Никто не ответил на этот вопрос, но однажды мне нужно было быстро перенести базу данных, и в итоге я использовал sqlautocode , который является инструментом для автоматического создания (Python orm) модели из существующей базы данных - модели использует великолепную sqlalchemy orm библиотеку. Он даже генерирует некоторый пример кода, чтобы начать ... (см. Ниже)

Удивительно, это сработало из коробки. У вас нет полной миграции, но есть простой способ программного доступа ко всем вашим таблицам (в python).

Я не делал этого в этом проекте, но вы, конечно, могли бы автоматически сгенерировать свой слой orm для целевой БД, а затем написать скрипт, который переносит правильные строки в желаемую структуру.

Как только вы добавите содержимое вашей БД в python, вы сможете работать с u'unicode ', даже если это займет некоторое время, в зависимости от фактической грубости ...

Пример кода:

# some example usage
if __name__ == '__main__':
db = create_engine(u'mysql://username:password@localhost/dbname')
metadata.bind = db

# fetch first 10 items from address_book
s = customers.select().limit(10)
rs = s.execute()
for row in rs:
    print row
0 голосов
/ 04 сентября 2014

Можно считать Logstash .

logstash - это инструмент для управления событиями и журналами. Вы можете использовать его для сбора журналов, их анализа и сохранения для дальнейшего использования (например, для поиска)

Logstash управляет каждым событием / журналом, как канал: input | фильтр | выход. Logstash имеет много входных плагинов для приема различных источников / форматов, и вы можете использовать фильтр для анализа ваших исходных данных, а затем выводить их на несколько выходных данных / форматов, которые вам нужны.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...