是否有为 SQL Server 生成完整数据库 DDL 的工具? Postgres 和 MySQL 呢?
Posted
技术标签:
【中文标题】是否有为 SQL Server 生成完整数据库 DDL 的工具? Postgres 和 MySQL 呢?【英文标题】:Is there a tool to generate a full database DDL for SQL Server? What about Postgres and MySQL? 【发布时间】:2010-12-28 03:21:04 【问题描述】:使用 Toad for Oracle,我可以生成完整的 DDL 文件,描述 Oracle 模式的所有表、视图、源代码(过程、函数、包)、序列和授权。一个很棒的功能是将每个 DDL 声明分成不同的文件(每个对象的文件,无论是表、过程、视图等),因此我可以编写代码并查看数据库的结构而无需 DB 连接.使用 DDL 文件的另一个好处是,我不必在每次需要查看表定义时都连接到数据库来生成 DDL。在 Toad for Oracle 中,执行此操作的方法是转到数据库 -> 导出并根据您要导出的内容选择适当的菜单项。它可以让您及时了解数据库。
是否有“批处理”工具可以导出 - 所有表 DDL(包括索引、检查/引用约束) - 所有源代码(每个过程、函数的单独文件) - 所有视图 - 所有序列 来自 SQL Server?
PostgreSQL 怎么样? 那么 mysql 呢? 安格尔呢?
我对工具是开源还是商业没有偏好。
【问题讨论】:
我希望将答案授予多个答案,因为每个答案都是特定于数据库的,并且大多数主要数据库系统都提出了该问题。 【参考方案1】:对于 SQL Server:
在 SQL Server Management Studio 中,右键单击您的数据库并选择“任务”->“生成脚本”。
系统将要求您选择要在脚本中包含哪些 DDL 对象。
【讨论】:
当我在寻找一个完全脚本化的选项时,这是我找到的最好的答案! 谢谢!我首先投了反对票并添加了一个反应,但后来我发现我误读了你的答案。 如何使导出按字母顺序排序?【参考方案2】:在 PostgreSQL 中,只需对 pg_dump 使用 -s 选项。您可以将它作为一个普通的 sql 脚本(整个数据库的一个文件)以自定义格式获取,然后您可以抛出一个脚本,以便根据需要为每个对象获取一个文件。
PgAdmin 工具还会向您显示每个对象的 SQL 转储,但我认为没有一种很好的方法可以从那里一次获取所有对象。
【讨论】:
【参考方案3】:对于 mysql,我使用 mysqldump。命令很简单。
$ mysqldump [选项] db_name [表]
$ mysqldump [选项] --databases db_name1 [db_name2 db_name3...]
$ mysqldump [选项] --all-databases
有很多选择。 Take a look here 供参考。
【讨论】:
【参考方案4】:除了 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
【讨论】:
【参考方案5】:MySQL 有一个很棒的工具,叫做MySQL workbench,它可以让您对数据库进行反向和正向工程以及同步,我非常喜欢。您可以在执行这些函数时查看 DDL。
【讨论】:
【参考方案6】:我写了SMOscript,它可以满足您的要求(指的是MSSQL Server)
【讨论】:
【参考方案7】:按照 Daniel Vassallo 的说法,这对我有用:
pg_dump -f c:\filename.sql -C -n public -O -s -d Moodle3.1 -h localhost -p 5432 -U postgres -w
【讨论】:
【参考方案8】:试试这个基于 python 的工具:Yet another script to split PostgreSQL dumps into object files
【讨论】:
以上是关于是否有为 SQL Server 生成完整数据库 DDL 的工具? Postgres 和 MySQL 呢?的主要内容,如果未能解决你的问题,请参考以下文章
是否有为 Spring 3 REST 控制器生成 JSON SMD 的解决方案?
在 SQL Server 2005 中恢复 SQL Server 2014 数据库
对 SQL Server 中的所有表进行索引之前和之后的完整性能报告
sqlserver 插入完整的数据后,为啥查询出来某个字段为只显示一半