Есть ли инструмент для создания полного DDL базы данных для SQL Server? А как насчет Postgres и MySQL?

Используя Toad для Oracle, я могу генерировать полные файлы DDL, описывающие все таблицы, представления, исходный код (процедуры, функции, пакеты), последовательности и гранты схемы Oracle. Отличной особенностью является то, что он разделяет каждое объявление DDL на разные файлы (файл для каждого объекта, будь то таблица, процедура, представление и т. Д.), Поэтому я могу писать код и видеть структуру базы данных без подключения к БД. . Другое преимущество работы с файлами DDL заключается в том, что мне не нужно подключаться к базе данных для генерации DDL каждый раз, когда мне нужно просмотреть определения таблиц. В Toad для Oracle это можно сделать, выбрав «База данных» -> «Экспорт» и выбрав соответствующий пункт меню в зависимости от того, что вы хотите экспортировать. Это дает вам хорошее представление о базе данных на тот момент времени.

Есть ли «пакетный» инструмент, который экспортирует
- все таблицы DDL (включая индексы, проверочные / ссылочные ограничения)
- весь исходный код (отдельные файлы для каждой процедуры, функции)
- все представления
- все последовательности
из SQL Server?

Что насчет PostgreSQL?
Что насчет MySQL?
Что насчет Ingres?

У меня нет предпочтений относительно того, является ли инструмент открытым или коммерческим.


person Community    schedule 18.12.2009    source источник
comment
Я хотел бы наградить ответ более чем одним ответом, поскольку каждый ответ специфичен для БД, и этот вопрос задавался для большинства основных систем БД.   -  person    schedule 29.04.2010


Ответы (8)


В PostgreSQL просто используйте параметр -s для pg_dump. Вы можете получить его как простой sql-скрипт (один файл для всей базы данных) в настраиваемом формате, который затем вы можете использовать скрипт, чтобы получить по одному файлу для каждого объекта, если хотите.

Инструмент PgAdmin также покажет вам дамп SQL каждого объекта, но я не думаю, что есть хороший способ получить их все сразу оттуда.

person Magnus Hagander    schedule 19.12.2009

Для SQL Server:

В SQL Server Management Studio щелкните правой кнопкой мыши свою базу данных и выберите «Задачи» -> «Создать сценарии».

Вам будет предложено выбрать, какие объекты DDL включить в сценарий.

person Daniel Vassallo    schedule 18.12.2009
comment
Пока я искал вариант с полностью написанным сценарием, это лучший ответ, который я когда-либо находил! - person CoveGeek; 11.02.2016
comment
Спасибо! Сначала я проголосовал против и добавил реакцию, но потом обнаружил, что неправильно прочитал ваш ответ. - person Leonard; 12.09.2019
comment
Как сделать экспорт отсортированным по алфавиту? - person Alessandro C; 04.05.2020

Для mysql я использую mysqldump. Команда довольно проста.

$ mysqldump [параметры] имя_бд [таблицы]

$ mysqldump [параметры] --databases имя_базы_данных1 [имя_бд2_имя_бд3 ...]

$ mysqldump [параметры] - все-базы данных

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

person Carl    schedule 18.12.2009

В дополнение к мастеру «Создание сценариев» в SSMS теперь вы можете использовать mssql-scripter, который является инструментом командной строки для создания сценариев DDL и DML.

Это инструмент на основе Python с открытым исходным кодом, который можно установить с помощью: pip install mssql-scripter.

Вот пример того, что вы можете использовать для создания сценария схемы базы данных и данных в файл. mssql-scripter -S localhost -d AdventureWorks -U sa --schema-and-data> ./adventureworks.sql Дополнительные рекомендации: https://github.com/Microsoft/sql-xplat-cli/blob/dev/doc/usage_guide.md

А вот ссылка на репозиторий GitHub: https://github.com/Microsoft/sql-xplat-cli

person Tara Raj    schedule 22.05.2017

В MySQL есть отличный инструмент под названием MySQL workbench, который позволяет выполнять обратное и прямое проектирование баз данных, а также синхронизировать, что Мне действительно нравится. Вы можете просмотреть DDL при выполнении этих функций.

person Andy West    schedule 18.12.2009

Я написал SMOscript, который выполняет то, что вы просите (относится к серверу MSSQL)

person devio    schedule 18.12.2009

Следуя тому, что сказал Даниэль Вассалло, это сработало для меня:

pg_dump -f c:\filename.sql -C -n public -O -s -d Moodle3.1 -h localhost -p 5432 -U postgres -w
person Karl    schedule 06.04.2017

попробуйте этот инструмент на основе Python: Еще один скрипт для разделения дампов PostgreSQL на объектные файлы

person shcherbak    schedule 15.03.2017