2013-07-30 2 views
0

종종 기존 SQL Server 데이터베이스의 전체 스키마를 파일로 추출해야합니다. 테이블, 뷰, 함수, SP, UDDT, 트리거 등 모든 객체를 다룰 필요가 있습니다. 그 목적은 file-diff 유틸리티를 사용하여 해당 스키마를 기준 참조와 비교하는 것입니다.Python - SQL Server 데이터베이스 스키마를 파일로 추출

일반적으로 Enterprise Manager 또는 Management Studio를 사용하여 DB 개체를 스크립팅 한 다음 해당 파일을 연결하여 일관된 예측 가능한 순서로 하나의 큰 파일을 만듭니다. 파이썬에서이 작업을 수행 할 수있는 방법이 있는지 궁금합니다. 분명히 추가 패키지가 필요 하겠지만, 몇 가지 (pyodbc, SQLAlchemy, SQLObject)를 살펴 보았을 때 이들 중 어느 것도이 사용 사례에 적합하지 않은 것으로 보입니다.

답변

3

SQL Server에 연결하여 Python으로 쿼리를 실행할 수 있다면 가능합니다. 그러나 올바르게 작동하려면 많은 노력과 테스트가 필요합니다.

아이디어는 시스템 테이블을 사용하여 각 개체에 대한 세부 정보를 얻은 다음이를 기반으로 DDL 문을 생성하는 것입니다. sys.syscomments 테이블에 모든 DDL 문이 이미 존재하는 것은 아닙니다.

파이썬으로 작업하기 전에 SSMS에서 이것을 실행하고 검사 해보십시오.

select * 
from sys.tables 

select * 
from sys.all_columns 

select * 
from sys.views 

select * 
from sys.syscomments 

MSDN의 모든 시스템 테이블 documentation.

2

저는이 PowerShell 전략을 과거에 사용해 왔습니다. 분명히 그것은 파이썬이 아니지만, 파이썬 안에서 실행하고 작성할 수있는 스크립트입니다. http://blogs.technet.com/b/heyscriptingguy/archive/2010/11/04/use-powershell-to-script-sql-database-objects.aspx

면책 사항으로, 모든 단일 개체가 아니라 저장 프로 시저 만 내보내고있었습니다.이 문서는 가장 쉽고 저렴한 솔루션 일 수 있습니다.

+0

실제로 나는이 접근법을 다른 대답보다 더 좋아하지만 PowerShell 학습 곡선은 저를위한 고집 포인트입니다. 지금은 파이썬 옵션을 사용 하겠지만, 전환 할 수는 있습니다. – JDM

관련 문제