#python #sql-server
#python #sql-сервер
Вопрос:
Я хотел бы иметь кроссплатформенный способ выгрузки DDL базы данных SQL Server в файлы, чтобы я мог сохранять их в системе управления версиями. В настоящее время я использую SQLDMO в VBScript в Windows для этого, но я надеюсь, что смогу сделать это и из системы Linux, предпочтительно на Python.
В настоящее время у меня есть что-то вроде решения с использованием отражения таблицы SQLAlchemy, но это немного медленно и в настоящее время не дает мне всех деталей, которые я хочу. Например, отсутствует внешний ключ «При КАСКАДНОМ УДАЛЕНИИ».
Существуют ли какие-либо другие проекты, восстанавливающие DDL только из того, что вы можете получить через T-SQL? Если это так, я, вероятно, смогу перенести это на Python без особых проблем. Другие предложения также приветствуются.
Комментарии:
1. Вы могли бы использовать RDP-клиент для удаленного рабочего стола из * nix на WinServer и запускать существующие скрипты…
2. Если доступно , я нахожу Microsoft VS Database Project (требуется VS, не уверен, какая версия) подходящим инструментом для этой задачи. Я думаю, что на самом деле есть способ попросить SQL Server вернуть определения в виде буквального текста, но я мог бы просто выдумать это.
Ответ №1:
Вот мой пример некоторого кода, который делает это:
https://bitbucket.org/rsyring/mssqlddlwriter/
Он записывает основные сведения для таблиц, ограничений, индексов и запускает файлы.
Комментарии:
1. упс. Не знал, что вы были оригинальным постером — и мне было интересно, как проект bitbucket мог появиться так недавно ! 🙂
Ответ №2:
Это не полное решение (это скрипт, изначально написанный Тимом Чепменом, который я в какой-то момент нашел в Интернете и который несколько раз исправлялся), но я использую хранимую на T-SQL процедуру, которая может создавать таблицы сценариев:
Это не очень полезно, если вы хотите создавать сценарии и для других объектов (процессы, представления и т.д.), Но если вы ищете только структуру таблицы, у меня это сработало довольно хорошо! Как и предложение @ Randy выше, он обрабатывает таблицы, индексы и ограничения, хотя этот не обрабатывает триггеры.
Комментарии:
1. Спасибо за ссылку. Я использую отражение SQLAlchemy для генерации табличной части, но обеспокоен тем, что мне не хватает некоторых деталей. В конечном итоге я могу реализовать это самостоятельно, и в этот момент ссылка будет полезной.